1 solutions

  • 4
    @ 2024-8-26 11:34:41

    老子不信有人代码比我短!!!

    #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;
    }
    
    
    • @ 2024-11-11 15:40:43

      目前为止好像只有你做了 笑哭 赞赞赞

  • 1

Information

ID
6256
Time
1000ms
Memory
256MiB
Difficulty
4
Tags
# Submissions
33
Accepted
2
Uploaded By