描述 | |
---|---|
知识点 | 循环 |
运行时间限制 | 0M |
内存限制 | 0 |
输入 | 一个正整数N。(N不大于30000) |
输出 | 不大于N的与7有关的数字个数,例如输入20,与7有关的数字包括7,14,17. |
样例输入 | 20 |
样例输出 | 3 |
本题刚开始我想用简单的方法做,先将7的倍数的数的个数求出来,然后求该数的位数,将7放置在某一位,然后其他位变化。因为这几种情况涉及到包含的关系,比较复杂。
后来索性就从1开始到N遍历,先判断是不是7的倍数,不是的话,再看有没有哪一位是7,两个条件有一个满足,立马计数并进行下一次循环。
#include <iostream>
using namespace std;
int main(){
int N;
cin>>N;
int count = 0;
for(int i=1;i<N;i++){
if(i%7 == 0){
count ++;
continue;
}
int temp = i;
while(temp){
int end = temp % 10;
if(end == 7){
count++;
break;
}
temp = temp / 10;
}
}
cout<<count<<endl;
return 0;
}