如果你TLE了后两个点,用while又不想大改
查看原帖
如果你TLE了后两个点,用while又不想大改
465265
hfydtzx楼主2024/10/3 14:10

可以用比较抽象的优化方式

year=1583;
while(n-29219400>0){
	n-=29219400;
   year+=80000;
}
while(n-2921940>0){
	n-=2921940;
	year+=8000;
}
while(n-292194>0){
	n-=292194;
	year+=800;
}
while(n-365>0){
	n-=365;
	if((year%4==0&&year%100!=0)||year%400==0){
		year--;
	}
	year++;
}
2024/10/3 14:10
加载中...