迷茫的小马同学


私信TA

用户名:1986054842

访问量:527

签 名:

等  级
排  名 29138
经  验 477
参赛次数 0
文章发表 6
年  龄 0
在职情况 学生
学  校
专  业

  自我简介:

解题思路:

开始数字存放放在list集合中


list下标0123456
数字序列0123456
数字序号
123456

第一轮:幸运数字2(list初始化可以直接填入下列数字序列)


list下标0123456
数字序列01357911

第二轮:幸运数3

剔除后:


list下标0123456
数字序列013
79

缩紧后:


list下标0123456
数字序列013791315

...........


参考代码:

import java.util.ArrayList;
import java.util.Scanner;

public class Test4 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int m = sc.nextInt();
        int n = sc.nextInt();
        //定义集合List去存放数字序列
        ArrayList<Integer> list = new ArrayList<>();
        //由于数字序列1 2 3..是从下标1开始计算的
        //为了方便,将集合0索引的数字设置为0
        list.add(0);
        //第一轮剔除,剔除幸运数字2的倍数的下标位置
        for(int i = 1;i<n;i++){
            //如果集合索引是幸运数字2的倍数,则跳过
            if(i % 2 == 0){
                continue;
            }
            //如果不是,则添加进集合中
            list.add(i);
        }
        //定义变量记录幸运数字索引
        int luckIndex = 2;
        //使用While循环实现剔除幸运数字倍数的下标
        while(true){
            //定义临时集合temp,用于存放每一轮剔除后的数字序列
            ArrayList<Integer> temp = new ArrayList<>();
            temp.add(0);
            //定义变量记录幸运数字的值
            int luckNum = list.get(luckIndex);
            //遍历集合list
            for(int i = 1; i < list.size(); i++){
                //若为幸运数字倍数的下标,则跳过
                if(i % luckNum == 0){
                    continue;
                }
                //否则,就添加入临时集合temp中
                temp.add(list.get(i));
            }
            //上一轮剔除结束,下一轮开始
            luckIndex++;
            //将上一轮的数字序列重新赋给list
            list = temp;
            //当幸运数字下标超过集合list最大索引list.size()-1,则跳出while循环
            if(luckIndex > list.size()-1){
                break;
            }
        }
        //定义变量记录符合要求的个数
        int count = 0;
        for (int i = 1; i < list.size(); i++) {
            int num = list.get(i);
            if(num > m){
                count++;
            }
        }
        System.out.println(count);
    }
}


 

0.0分

2 人评分

看不懂代码?想转换其他语言的代码? 或者想问其他问题? 试试问问AI编程助手,随时响应你的问题:

编程语言转换

万能编程问答  

代码解释器

代码纠错

SQL生成与解释

  评论区