#include<stdio.h>
int main(){
int ans = 0;
int i,m,n;
for(i = 1;i<=2019;i++){
for(m=i-1;m>0;m--){
for(n=m-1;n>0;n--){
if(i+m+n==2019){
ans+=1;
}
}
}
}
printf("%d",ans);
return 0;
}
题目还有一个条件,整数中不能有2和4,你没有考虑。
//isRight用来判断一个整数是否有2和4
bool isRight(int x) {
while (x) {
int cnt = x % 10;
if (cnt==2 || cnt==4)
return false;
x /= 10;
}
return true;
}
int main() {
int ans = 0;
int i, m, n;
for (i = 673; i <= 2019; i++) {//673*3=2019
if (!isRight(i)||i*3<2019)//m和n都小于i,如果i*3都小于2019,就没必要再算m和n了
continue;
for (m = i - 1; m > 0; m--) {
if (!isRight(m)||i+m*2<2019)
continue;
for (n = m - 1; n > 0; n--) {
if (!isRight(n))
continue;
if (i + m + n < 2019)
break;
if (i + m + n == 2019)
ans += 1;
}
}
}
printf("%d", ans);
return 0;
}