赞
踩
模拟日期遍历至20211231即可
- //问2001年1月1到2021年12月31有多少个完全日期
- #include<bits/stdc++.h>
- using namespace std;
- bool check(int y,int m,int d)
- {
- int ans=0;
- while(y)
- {
- ans+=y%10;
- y/=10;
- }
- while(m)
- {
- ans+=m%10;
- m/=10;
- }
- while(d)
- {
- ans+=d%10;
- d/=10;
- }
- for(int i=1;i<=9;i++)
- if(i*i==ans)
- return 1;
- return 0;
- }
- int a[2][13]={{0,31,28,31,30,31,30,31,31,30,31,30,31},{0,31,28,31,30,31,30,31,31,30,31,30,31}};
- int run(int y)
- {
- if(y%400==0)
- return 1;
- if(y%4==0&&y%100!=0)
- return 1;
- return 0;
- }
- int day(int y,int m)
- {
- return a[run(y)][m];
- }
-
- int main()
- {
- int y=2001,m=1,d=1;
- int ans=0;
- while(1)
- {
- for(int i=d;i<=day(y,m);i++)
- {
- if(check(y,m,d))
- ans++;
- d++;
- }
- if(y==2021&&m==12)
- break;
- d=1;
- m++;
- if(m==13)
- {
- m=1;
- y++;
- }
- }
- cout<<ans<<endl;
- return 0;
- }
- //ans=977
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。