题目明明的幸运数 明明喜欢7这个数字,如果一个数的十进制表示中含有7,则该数为明明的幸运数。例如7,78,17都是幸运数,而168不是幸运数。
如果一个数能够被幸运数整除,则称之为近似幸运数。例如14能被7整除,是一个近似幸运数。
现给定两个正整数,请输出这个区间内(含区间首尾)既不是幸运数也不是近似幸运数的那些数的数量;如果不存在,则输出0。
[输入描述]
输入两个整数a, b。
[输出描述]
输出为一个数,表示[a, b]区间中既不是幸运数也不是近似幸运数的数的数量。
样例输入:1 10
样例输出:9
#include<bits/stdc++.h>
using namespace std;
int a,b;
int i;
int sum=0;
bool flag;
void p_seven(){
flag=false;
int x,y=1;
int n=i;
if(i<10) x=1;
if(i>=10&&i<=99) x=2;
if(i>=100&&i<=999) x=3;
if(i>=1000&&i<=9999) x=4;
if(i>=10000&&i<=99999) x=5;
if(i>=100000&&i<=999999) x=6;
if(i==1000000) x=7;
while(y<=x){
int right=n%10;
n/=10;
y++;
if(right==7){
flag=true;
return ;
}
}
flag=false;
}
int main(){
cin>>a>>b;
for(i=a;i<=b;i++){
if(i==7){
sum++;
}
p_seven();
if(i%7==0){
sum++;
}
if(flag==true){
sum++;
}
}
printf("%d\n",b-sum);
return 0;
}
搞不懂啊!!