#include<iostream>#include<cmath>usingnamespace std;intjudge(int y){if(y %400==0||(y %4==0&& y %100!=0))return1;return0;}intmain(){int h[13][2]={{0,0},{31,31},{28,29},{31,31},{30,30},{31,31},{30,30},{31,31},{31,31},{30,30},{31,31},{30,30},{31,31}};int d[3]={2001,1,1}, count =0, t, leap, sum, date[3], sqr;while(!(d[0]==2021&& d[1]==12&& d[2]==31)){
sum =0;for(int i =0; i <3; i++){
date[i]= d[i];while(date[i]){
t = date[i]%10;
date[i]/=10;
sum += t;}}
sqr =sqrt(sum);if(sqr * sqr == sum) count++;
leap =judge(d[0]);
d[2]++;if(d[2]> h[d[1]][leap]){
d[2]=1;
d[1]++;}if(d[1]>12){
d[1]=1;
d[0]++;}}printf("%d", count);return0;}
solution2
#include<iostream>#include<cmath>intmain(){int h[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};int count =0, y, m, d, sum, sqr;for(int i =1; i <=21; i++){
sum =0;if((i +2000)%400==0||((i +2000)%4==0&&(i +2000)%100!=0)) h[2]=29;else h[2]=28;for(int j =1; j <=12; j++){for(int k =1; k <= h[j]; k++){
y =2+ i %10+ i /10;
m = j %10+ j /10;
d = k %10+ k /10;
sum = y + m + d;
sqr =sqrt(sum);if(sum == sqr * sqr) count++;}}}printf("%d", count);return0;}