问题描述
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 个输入后失败。怎么办?
1楼
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()
2楼
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;
}
}