当前位置: 代码迷 >> java >> 如果一个数字是 3 的倍数或其中包含数字 3,则该数字被定义为 3Den。 给定一个数字 num 作为输入,计算 1 和 num 之间的 3Den 数量
  详细解决方案

如果一个数字是 3 的倍数或其中包含数字 3,则该数字被定义为 3Den。 给定一个数字 num 作为输入,计算 1 和 num 之间的 3Den 数量

热度:32   发布时间:2023-07-17 21:04:26.0
public int count(int num){
        //write your code here

        int i;
        int counter=0;
        for(i=2;i<=num;i++){
        if((i%3==0)||(i%10==3)||(i/10==3||(i/100==3)))
        counter++;
        }
        return counter;
    }

样本输入 #1

count(15)

示例输出 #1

6 (3,6,9,12,13,15)

样本输入 #2

count(40)

示例输出 #2

21 (3,6,9,12,13,15,18,21,23,24,27,30,31,32,33,34,35,36,37,38,39)

我的代码在 100 个输入内通过了所有测试用例,但在 100 个输入后失败。怎么办?

if((i%3==0) || (i%10==3) || (i/10==3) || (i/100==3) ))

如果条件不好。 例如数字:134 是数字 3Den,但它不会在您的 if 语句中返回 true

提示:您需要(例如)创建 while 循环并使用指数,如: ((i / (10^a)) % 10)==3

方法 2:(不太整洁)将int i更改为String ,然后使用String.contains()String.indexOf()

public class NextMultiple37 {

    public static void main(String[] args) {
        NextMultiple37 obj = new NextMultiple37();
        int result = obj.findNextMultiple(1024);
        System.out.println(result);
    }

    public int findNextMultiple (int num) {
        //write your code here
        int i=0;
        for(i=num+1;i>=num;i++){
            if(i%3==0&&i%7==0){
                return i;
            }
        }
        return i;
    }   
}