有人帮我看看为什么挂了吗
  • 板块学术版
  • 楼主KSToki
  • 当前回复12
  • 已保存回复12
  • 发布时间2020/11/17 09:12
  • 上次更新2023/11/5 07:52:29
查看原帖
有人帮我看看为什么挂了吗
68011
KSToki楼主2020/11/17 09:12

CSP-S T1,自测都是 100pts,查分查出来 0 分。

代码:

#include<bits/stdc++.h>
#define ll long long
using namespace std;
inline int read()
{
	char ch=getchar();
	int flag=1;
	while(ch<'0'||ch>'9')
	{
		ch=getchar();
		if(ch=='-')
			flag=-1;
	}
	int res=0;
	while(ch>='0'&&ch<='9')
	{
		res=res*10+ch-'0';
		ch=getchar();
	}
	return res*flag;
}
const int fy=366+365+365+365;
const int fhy=146097;
int mt[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
int q;
ll r;
int main()
{
	freopen("julian.in","r",stdin);
	freopen("julian.out","w",stdout);
	q=read();
	while(q--)
	{
		scanf("%lld",&r);
		++r;
		if(r<=1721424)
		{
			int y=r/fy*4;
			r%=fy;
			if(r>=366)
			{
				++y;
				r-=366;
				while(r>=365)
				{
					++y;
					r-=365;
				}
			}
			y=4713-y;
			if(y%4==1)
				++mt[2];
			int m=1;
			while(r>=mt[m])
			{
				r-=mt[m];
				++m;
			}
			if(r==0&&m==1)
			{
				++y;
				m=12;
				r=31;
			}
			else if(r==0)
			{
				--m;
				r=mt[m];
			}
			printf("%d %d %d BC\n",r,m,y);
			mt[2]=28;
		}
		else
		{
			r-=1721424;
			if(r<=577737)
			{
				int y=r/fy*4;
				r%=fy;
				if(r>=365)
				{
					++y;
					r-=365;
					if(r>=365)
					{
						++y;
						r-=365;
						if(r>=365)
						{
							++y;
							r-=365;
						}
					}
				}
				y=y+1;
				if(y%4==0)
					mt[2]=29;
				int m=1;
				while(r>=mt[m])
				{
					r-=mt[m];
					++m;
				}
				if(r==0&&m==1)
				{
					--y;
					m=12;
					r=31;
				}
				else if(r==0)
				{
					--m;
					r=mt[m];
				}
				printf("%d %d %d\n",r,m,y);
				mt[2]=28;
			}
			else
			{
				r-=577737;
				if(r<=78)
				{
					if(r<=17)
						printf("%d %d %d\n",14+r,10,1582);
					else
					{
						if(r==78)
						{
							printf("%d %d %d\n",31,12,1582);
							continue;
						}
						r-=17;
						int m=11;
						while(r>=mt[m])
						{
							r-=mt[m];
							++m;
						}
						if(r==0)
						{
							--m;
							r=mt[m];
						}
						printf("%d %d %d\n",r,m,1582);
					}
				}
				else
				{
					r-=78;
					int y=1582+r/fhy*400+1;
					r%=fhy;
					for(int i=1583;i<1983;++i)
					{
						int dd;
						if((i%400==0)||(i%4==0&&i%100!=0))
							dd=366;
						else
							dd=365;
						if(r>=dd)
						{
							r-=dd;
							++y;
						}
						else
							break;
					}
					if((y%400==0)||(y%4==0&&(y%100!=0)))
						mt[2]=29;
					int m=1;
					while(r>=mt[m])
					{
						r-=mt[m];
						++m;
					}
					if(r==0&&m==1)
					{
						r=31;
						m=12;
						--y;
					}
					else if(r==0)
					{
						--m;
						r=mt[m];
					}
					printf("%d %d %d\n",r,m,y);
					mt[2]=28;
				}
			}
		}
	}
	fclose(stdin);
	fclose(stdout);
	return 0; 
}
2020/11/17 09:12
加载中...