爆零求助
查看原帖
爆零求助
260196
超次元楼主2020/11/11 10:55

考场上的模拟(疯狂打表) 样例都过但是爆零 求助

#include<bits/stdc++.h>
using namespace std;
int q;
long long r;
long long y,m,d;
int s1[13]={0,31,59,90,120,151,181,212,243,273,304,334,365};
int s2[13]={0,31,60,91,121,152,182,213,244,274,305,335,366};
int s[401]={0,365,730,1096,1461,1826,2191,2557,2922,3287,3652,4018,4383,4748,5113,5479,5844,6209,6574,6940,7305,7670,8035,8401,8766,9131,9496,9862,10227,10592,10957,11323,11688,12053,12418,12784,13149,13514,13879,14245,14610,14975,15340,15706,16071,16436,16801,17167,17532,17897,18262,18628,18993,19358,19723,20089,20454,20819,21184,21550,21915,22280,22645,23011,23376,23741,24106,24472,24837,25202,25567,25933,26298,26663,27028,27394,27759,28124,28489,28855,29220,29585,29950,30316,30681,31046,31411,31777,32142,32507,32872,33238,33603,33968,34333,34699,35064,35429,35794,36159,36524,36889,37254,37620,37985,38350,38715,39081,39446,39811,40176,40542,40907,41272,41637,42003,42368,42733,43098,43464,43829,44194,44559,44925,45290,45655,46020,46386,46751,47116,47481,47847,48212,48577,48942,49308,49673,50038,50403,50769,51134,51499,51864,52230,52595,52960,53325,53691,54056,54421,54786,55152,55517,55882,56247,56613,56978,57343,57708,58074,58439,58804,59169,59535,59900,60265,60630,60996,61361,61726,62091,62457,62822,63187,63552,63918,64283,64648,65013,65379,65744,66109,66474,66840,67205,67570,67935,68301,68666,69031,69396,69762,70127,70492,70857,71223,71588,71953,72318,72683,73048,73413,73778,74144,74509,74874,75239,75605,75970,76335,76700,77066,77431,77796,78161,78527,78892,79257,79622,79988,80353,80718,81083,81449,81814,82179,82544,82910,83275,83640,84005,84371,84736,85101,85466,85832,86197,86562,86927,87293,87658,88023,88388,88754,89119,89484,89849,90215,90580,90945,91310,91676,92041,92406,92771,93137,93502,93867,94232,94598,94963,95328,95693,96059,96424,96789,97154,97520,97885,98250,98615,98981,99346,99711,100076,100442,100807,101172,101537,101903,102268,102633,102998,103364,103729,104094,104459,104825,105190,105555,105920,106286,106651,107016,107381,107747,108112,108477,108842,109207,109572,109937,110302,110668,111033,111398,111763,112129,112494,112859,113224,113590,113955,114320,114685,115051,115416,115781,116146,116512,116877,117242,117607,117973,118338,118703,119068,119434,119799,120164,120529,120895,121260,121625,121990,122356,122721,123086,123451,123817,124182,124547,124912,125278,125643,126008,126373,126739,127104,127469,127834,128200,128565,128930,129295,129661,130026,130391,130756,131122,131487,131852,132217,132583,132948,133313,133678,134044,134409,134774,135139,135505,135870,136235,136600,136966,137331,137696,138061,138427,138792,139157,139522,139888,140253,140618,140983,141349,141714,142079,142444,142810,143175,143540,143905,144271,144636,145001,145366,145732,146097};
int main()
{
	//freopen("julian.in","r",stdin);
	//freopen("julian.out","w",stdout);
	cin>>q;
	for(int i=1;i<=q;i++)
	{
		cin>>r;
		if(r<=2299160) 
		{
			y=r/1461*4;
			d=r%1461;
			r%=1461;
			bool f=0;
			if(r>=366) y++,d-=366,r-=366,f=1;
			if(r>=365&&f) y+=r/365,d=r%365,r%=365;
			if(y<4713) y-=4713;
			else y-=4712;
			long long j;
			if((y<0&&(y+1)%4==0)||(y>0&&y%4==0))
			{
				for(j=1;j<=12;j++) if(s2[j-1]<r&&s2[j]>=r)break;
				m=j,d-=s2[j-1]-1;
			}
			else
			{
				for(j=1;j<=12;j++) if(s1[j-1]<r&&s1[j]>=r)break;
				m=j,d-=s1[j-1]-1;
			}
			if(y<0) printf("%lld %lld %lld BC\n",d,m,-y);
			else printf("%lld %lld %lld\n",d,m,y); 
		}
		if(r>2299160)
		{
			r-=2298873;
			y=(r/146097)*400+1582;
			r%=146097;
			long long j;
			for(j=1;j<=400;j++) if(s[j-1]<=r&&s[j]>r) {y+=j-1;r-=s[j-1];break;}
			if((y%4==0&&y%100!=0)||(y%400==0))
			{
				for(j=1;j<=12;j++) if(s2[j-1]<r&&s2[j]>=r)break;
				m=j,r=r-s2[j-1];
			}
			else
			{
				for(j=1;j<=12;j++) if(s1[j-1]<r&&s1[j]>=r)break;
				m=j,r=r-s1[j-1];
			}
			printf("%lld %lld %lld\n",r,m,y);	
		}
	}
	return 0;
}
2020/11/11 10:55
加载中...