调炸了……helpme
查看原帖
调炸了……helpme
289608
felixesintot楼主2022/10/6 22:59

rt

#include<cstdio>
#include<iostream>
#include<cstring>
#include<string>
#include<cstdlib>
#include<algorithm>
#include<queue>
#include<cmath>
#define fru(i,j,k) for(register int i=j;i<=k;i++)
#define frd(i,j,k) for(register int i=j;i>=k;i--)
#define finfout(str) freopen(#str".in","r",stdin);freopen(#str".out","w",stdout);
#define pc(x) putchar(x)
using namespace std;
namespace usegetin
{
	char c=' ';
	long long in(void)
	{
		long long x=0,f=1;
		while(!isdigit(c)){
			if(c=='-')f=-f;
			c=getchar();
		}
		while(isdigit(c))
		{
			x=(x<<1)+(x<<3)+(c^48);
			c=getchar();
		}
		return x*f;
	}
	template<typename t>
	void out(t x)
	{
		if(x<0)pc('-'),x=-x;
		if(x>9)out(x/10);
		pc(x%10+'0');
	}
};
using usegetin::in;using usegetin::out;
const int maxn=500012;
using ll = long long;
const int mod=1e9+7;
ll t,lve,n,nl[]={0,31,28,31,30,31,30,31,31,30,31,30,31};
const ll fyds=2299161;
inline int func(int n)
{
	return ((n<1582)?((n%4)?365:366):(((!(n%4)&&(n%100))||!(n%400))?366:365));
}
int main()
{
	//finfout(julian3);
	//freopen("putout.out","w",stdout);
	t=in();
	while(t--)
	{
		lve=in()+1;
		if(lve<=fyds)
		{
			n=-4712+(lve/1461)*4;
			lve%=1461;
			while(lve>((n%4)?365:366))
			{
				lve-=((n%4)?365:366);
				n++;
			}
			//cout<<n<<' '<<lve<<endl;
			if(!lve)
			{
				n--;
				lve=func(n);
			}
			if(func(n)==366)nl[2]++;
			fru(i,1,12)
			if(lve>nl[i])
				lve-=nl[i];
			else
			{
				out(lve);pc(' ');out(i);pc(' ');out(n>0?n:(1-n));pc(' ');if(n<=0)pc('B'),pc('C');
				pc('\n');
				//bl=true;
				break;
			}
			if(func(n)==366)nl[2]--;
		}
		else 
		{
			//cout<<n<<' '<<lve<<endl;
			lve-=1721426;
			n=1+(lve/146097)*400;
			lve%=146097;
			int tmp;
			//cout<<n<<' '<<lve<<endl;
			while(lve>(tmp=func(n)))
			{
				//cout<<(n=6100)<<' '<<((((!(n%4)&&(n%100))||!(n%400))?355:366))<<endl;
				lve-=tmp;
				n++;
			}
			if(!lve)
			{
				n--;
				lve=func(n);
			}
			if(func(n)==366)nl[2]++;
			//bool bl=false;
			fru(i,1,12)
			if(lve>nl[i])
				lve-=nl[i];
			else
			{
				out(lve);pc(' ');out(i);pc(' ');out(n);
				pc('\n');
				//bl=true;
				break;
			}
			//if(!bl)cout<<"felixesintot mushvase lujunpping233";
			if(func(n)==366)nl[2]--;
		}
	}
	return 0;
}

吐了,调了一下午

2022/10/6 22:59
加载中...