思路
我的思路很简单,先判断是否含有数字7得到一个小条件,然后再判断整体大条件,每满足一个大条件,总数n++(满足条件要跳过),代码如下,注释很明白:
#include<iostream>
using namespace std;
int n,v,m;
int a=0,b=0,c=0,d=0;//abcd代表甲乙丙丁
int main()
{
cin>>n;
for(int i=1;i<=n;i++)
{
m=i;v=0;//m代表当前数字,v用来标识
while(m>=10)//判断是否含有数字7
{
v=m%10;
if(v==7)break;
else m/=10;
}
if(m==7) v=7;//个位数单独判断,得到小条件v==7代表含有数字7,另一个小条件%7==0
if(i%4==1&&i%7==0||i%4==1&&v==7)//i%4==1代表甲,两个小条件判断
{
a++;
n++;//满足条件++
}
if(i%4==2&&i%7==0||i%4==2&&v==7)
{
b++;
n++;
}
if(i%4==3&&i%7==0||i%4==3&&v==7)
{
c++;
n++;
}
if(i%4==0&&i%7==0||i%4==0&&v==7)
{
d++;
n++;
}
}
//输出
cout<<a<<endl;
cout<<b<<endl;
cout<<c<<endl;
cout<<d<<endl;
return 0;
}