1 solutions
-
4
老子不信有人代码比我短!!!
#include<bits/stdc++.h> #define int long long using namespace std; int t,r; int year(int a){ if(a<1582){ if(abs(a)%4==0)return 366; return 365; } if(a==1582)return 355; if(a%400==0||(a%4==0&&a%100!=0))return 366; return 365; } int month(int y,int m){ int ck[13]={0,31,28,31,30,31,30,31,31,30,31,30,31}; if(y==1582)ck[10]-=10; else if(year(y)==366)ck[2]++; return ck[m]; } void find(int a){ int y=-4712,m=1; y+=a/(366+365*3)*4; if(y>1582)y=1582,a-=(366+365*3)*(6292/4)+365*2; else a-=(366+365*3)*((y+4712)/4); if(y==1582&&a>356)y++,a-=356; y+=(a/(97*366+303*365))*400; a-=(97*366+303*365)*(a/(97*366+303*365));a++; while(year(y)<a)a-=year(y),y++; while(month(y,m)<a)a-=month(y,m),m++; if(y<=0)cout<<a<<" "<<m<<" "<<-y+1<<" BC"<<endl; else if(y==1582&&m==10&&a>=5)cout<<a+10<<" "<<m<<" "<<y<<endl; else cout<<a<<" "<<m<<" "<<y<<endl; } signed main(){ cin>>t; while(t--){ cin>>r; find(r); } return 0; }
- 1
Information
- ID
- 6256
- Time
- 1000ms
- Memory
- 256MiB
- Difficulty
- 4
- Tags
- # Submissions
- 33
- Accepted
- 2
- Uploaded By