求助,算出来是对的,但是不能输出一千个数据
查看原帖
求助,算出来是对的,但是不能输出一千个数据
271627
WANGZHICHAO楼主2020/11/22 21:32
#include<bits/stdc++.h>
using namespace std;
struct julian{
	long long day,month,year,r,qh;
};
julian b[1000001];
int n;
long long a[1000001];
int hua1(int,int);//算有多少年
int hua2(int,int);//具体每月剩多少天
int pd1(int);//公元前还是公元后
int pd2(int);//判断闰年
int main()
{
	
	scanf("%d",&n);
	for(int i=1;i<=n;i++)	scanf("%d",&a[i]);
	for(int i=1;i<=n;i++)
	{
		b[i].day=hua1(a[i],i);
		b[i].qh=pd1(b[i].year);
		b[i].r=pd2(b[i].year);
		b[i].day=hua2(b[i].day,i);
	}
	for(int i=1;i<=n;i++)
	{
		if(b[i].qh==1) printf("%d %d %d\n",b[i].day,b[i].month,b[i].year-4712);
		else printf("%d %d %d BC\n",b[i].day,b[i].month,4713-b[i].year);
	}
	
	return 0;
}
int hua1(int x,int y)
{
	while(x>=365)
	{
		b[y].year++;
		if(pd2(b[y].year)==1) x-=366;
		else x-=365;
		if(b[y].year==6294&&x>308)
		{
			x+=10;
		}
	}
	return x;
}
int pd1(int f)
{
	if(f>=4713) return 1;
	else return 0;
}
int pd2(int g)
{
	if(g>=6294)
	{
		if(g%400==0&&g!=0) return 1;
		else
		{
			if(g%4==0&&g%100!=0&&g!=0) return 1;
			else return 0;
		}
	}
	else
	{
		if(g>=4713)
		{
			int m=g-4712;
			if(m%4==0&&g!=0) return 1;
			else return 0;
		}
		else
		{
			if(g%4==0&&g!=0) return 1;
			else return 0;
		}
	}
}
int hua2(int p,int q)
{
	b[q].month++;
	if(p>=31)
	{
		 b[q].month++;
		 p-=31;
		 if(b[q].r==1)
		{
			if(p>=28) 
			{
				b[q].month++; p-=28;
				if(p>=31) 
				{
					b[q].month++; p-=31;
					if(p>=30) 
					{
						b[q].month++; p-=30;
						if(p>=31)
						{
							b[q].month++; p-=31;
							if(p>=30) 
							{
								b[q].month++; p-=30;
								if(p>=31) 
								{
									b[q].month++; p-=31;
									if(p>=31)
									{
										b[q].month++; p-=31;
										if(p>=30) 
										{
											b[q].month++; p-=30;
											if(p>=31)
											{
												b[q].month++; p-=31;
												if(p>=30)
												{
													b[q].month++; p-=30;
													if(p>=31) b[q].month++; p-=31;
													cout<<q<<" "<<p<<endl;
												}
											}
										}
									}
								}
							}
						}
					}
				}
			}
		}
		else 
		{
			if(p>=29) 
			{
				b[q].month++; p-=29;
				if(p>=31) 
				{
					b[q].month++; p-=31;
					if(p>=30) 
					{
						b[q].month++; p-=30;
						if(p>=31)
						{
							b[q].month++; p-=31;
							if(p>=30) 
							{
								b[q].month++; p-=30;
								if(p>=31) 
								{
									b[q].month++; p-=31;
									if(p>=31)
									{
										b[q].month++; p-=31;
										if(p>=30) 
										{
											b[q].month++; p-=30;
											if(p>=31)
											{
												b[q].month++; p-=31;
												if(p>=30)
												{
													b[q].month++; p-=30;
													
												}
											}
										}
									}
								}
							}
						}
					}
				}
			}
		}
	}
	return p+1;
}
2020/11/22 21:32
加载中...