模拟(
2025-11-22 20:54:39
发布于:北京
2阅读
0回复
0点赞
我不行了 因为少开了1的空间查了一小时的错555
#include <bits/stdc++.h>
using namespace std;
#define int long long
const int N=2305814,year_400=146097;
int q,mon[13]={-1,31,28,31,30,31,30,31,31,30,31,30,31},DAY[N],MON[N],YEAR[N],BC[N],DAYG[year_400],MONG[year_400],YEARG[year_400];
bool check(int year){
if(year<=1582){
if(year<0) year++;
return year%4==0;
}
return (year%4==0&&year%100!=0)||year%400==0;
}
void initjuli(){
int year=-4713,month=1,day=0;
for(int i=0;i<=N;i++){
int mon_day=mon[month]+(month==2&&check(year));
day++;
if(day>mon_day){
month++;
day=1;
}
if(month>12){
month=1;
year++;
}
if(year==0) year=1;
if(year==1582&&month==10&&day==5) day=15;
YEAR[i]=abs(year),MON[i]=month,DAY[i]=day,BC[i]=(year<0);
}
}
void initgre(){
int year=1601,month=1,day=0;
for(int i=0;i<year_400;i++){
int mon_day=mon[month]+(month==2&&check(year));
day++;
if(day>mon_day){
month++;
day=1;
}
if(month>12){
month=1;
year++;
}
YEARG[i]=abs(year)-1600,MONG[i]=month,DAYG[i]=day;
}
}
signed main(){
initjuli();
initgre();
cin>>q;
while(q--){
int r;
cin>>r;
if(r<N){
cout<<DAY[r]<<" "<<MON[r]<<" "<<YEAR[r]<<" ";
if(BC[r]) cout<<"BC";
}
else{
r-=N;
int year=1600+400*(r/year_400);
r%=year_400;
year+=YEARG[r];
int day=DAYG[r],month=MONG[r];
cout<<day<<" "<<month<<" "<<year;
}
cout<<endl;
}
return 0;
}
这里空空如也






有帮助,赞一个