挑7
描述
输出小于等于 n 的与 7 有关数字的个数,包括 7 的倍数,还有包含 7 的数字(如 17 ,27 ,37 … 70 ,71 ,72 ,73…)的个数(一组测试用例里可能有多组数据,请注意处理)
数据范围: 1<=n<=30000
本题有多组输入
输入描述:
多组输入每组输入 1 个正整数 n 。( n 不大于 30000 )
输出描述:
不大于n的与7有关的数字个数,例如输入20,与7有关的数字包括7,14,17.
示例1
输入:
20
10
输出:
3
1
方法一:(字符串输入)
#include<iostream>
#include<string>
using namespace std;
int main(){
string str;
while(cin>>str){
int N=stoi(str);
int cnt=0;
for(int i=1;i<=N;++i){
if(i%7==0){
cnt++;
continue;
}
string s=to_string(i);
for(int j=0;j<s.size();++j){
if(s[j]=='7'){
cnt++;
break;
}
}
}
cout<<cnt<<endl;
}
return 0;
}
方法二:(对每个数字除以、取余)
#include<iostream>
using namespace std;
bool ifSev(int num) {
while(num > 0) {
if (num % 10 == 7) {
return true;
}
num /= 10;
}
return false;
}
int main() {
int n;
while(cin >> n){
int ans = 0;
for(int i = 1; i <= n; ++i) {
if (i % 7 == 0) {
ans++;
continue;
}
if (ifSev(i)) {
ans++;
}
}
cout << ans << endl;
}
return 0;
}