蒟蒻求助
查看原帖
蒟蒻求助
855663
0x0001cxr楼主2023/1/20 11:35

大佬看看我这40pts代码还有救吗? (如果要算法告诉我一声然后就不用管了,因为我不会算法)

#include<bits/stdc++.h>
using namespace std;


struct date
{
	int day;
	int m;
	int y;
};


bool run(int year)
{
	if(year < 0)
	{
		if((abs(year) - 1) % 4 == 0)
		{
			return true;
		}
		else
		{
			return false;
		}
	}
	else if(year > 0 && year <= 1582)
	{
		if(year % 4 == 0)
		{
			return true;
		}
		else 
		{
			return false;
		}
	}
	else if(year > 1582)
	{
		if((year % 4 == 0 && year % 100 != 0) || (year % 400 == 0))
		{
			return true;
		}
		else
		{
			return false;
		}
	}
}
int tian(int &a, int &ye)
{
	if(a == 1 || a == 3 || a == 5 || a == 7 || a == 8 || a == 10 || a == 12)
	return 31;
	else if(a == 4 || a == 6 || a == 9 || a == 11)
	{
		return 30;
	}
	else if(a == 2)
	{
		if(run(ye))
		{
			return 29;
		}
		else if(!run(ye))
		{
			return 28;
		}
	}
}
int main()
{
	int q;
	cin >> q;
	int r[100001];
	for(int i = 1;i <= q;i++)
	{
		cin >> r[i];
	}
	for(int i = 1;i <= q;i++)
	{
		date d;
		d.day = 1;
		d.m = 1;
		d.y = -4713;
		for(int j = 1;;j++)
		{
			if(d.y == 1582 && d.m == 10)
			{
				if(r[i] <= 3)
				{
					d.day += r[i];
					cout << d.day << " " << d.m << " " << d.y << endl;
					break;
				}
				else if(r[i] < 20)
				{
					d.day += (r[i] + 10);
					cout << d.day << " " << d.m << " " << d.y << endl;
					break;
				}
				else if(r[i] >= 20)
				{
					r[i] -= 21;
					d.m++;
					d.day = 1;
				}
			}
			else if(r[i] < tian(d.m, d.y))
			{
				d.day += r[i];
				if(d.y < 0)
				{
					cout << d.day << " " << d.m << " " << abs(d.y) << " " << "BC" << endl;
                    break;
				}
				else if(d.y > 0)
				{
					cout << d.day << " " << d.m << " " << d.y << endl;
                    break;
				}
			}
			else if(r[i] >= tian(d.m, d.y))
			{
				if(d.m != 12)
				{
					r[i] -= tian(d.m, d.y);
					d.m++;
					d.day = 1;
			  }
			  else if(d.m == 12)
			  {
			  	r[i] -= tian(d.m, d.y);
					d.m = 1;
					d.day = 1;
					if(d.y == -1)
					{
						d.y = 1;
					}
					else
					{
						d.y++;
					}
				}
			}
		}
	}
	return 0;
}
2023/1/20 11:35
加载中...