tips:我们用三重循环肯定会炸,但是我们可以把k表示为2019-i-j,这样我们就会少一重循环
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm> //最后一个数就是2019减去前两个数
using namespace std; //把2019分解成各不相同的三个数的和
int cnt = 0;
bool check(int num)
{
while(num)
{
int x = num%10;
if(x==2 || x==4) return 0;
num/=10;
}
return 1;
}
int main()
{
for(int i=1;i<=2019;i++)
for(int j=i+1;j<=2019;j++)
{
int k = 2019-i-j;
if(k<=j||k==i||k==j) continue;
if(check(i) && check(j) && check(k)) cnt++;
}
cout<<cnt<<endl;
return 0;
}
要加油哇!!!