小明对数位中含有2、0、1、9 的数字很感兴趣
在1 到40 中这样的数包括1、2、9、10 至32、39 和40,共28 个,他们的和是574。
请问,在1 到2019 中,所有这样的数的和是多少?
思路:三个for循环,由于不能重复,则i=1,j=i+1,k=j+1,然后取位数,判有没有2和4,有没有相等就行
#include <bits/stdc++.h>
using namespace std;
int n=2019;
bool judge(int x)
{
while(x)
{
int tmp=x%10;
if(tmp==2||tmp==4)return 0;
x/=10;
}
return 1;
}
int main()
{
int ans=0;
/* for(int i=1;i<=2017;i++)
{
for(int j=i+1;j<=2017;j++)
{
for(int k=j+1;k<=2017;k++)
{
int tmp1,tmp2,tmp3,tmp4;
tmp1=i;tmp2=j;tmp3=k;
tmp4=i+j+k;
if(judge(tmp1)&&judge(tmp2)&&judge(tmp3)&&tmp4==2019)
{
//printf("%d %d %d %d\n",tmp4,i,j,k);
ans++;
}
}
}
}*/
ans=40785;
cout<<ans;
return 0;
}