++++++++++++++++++++++++++++++++++++++++++++1076+++++++++++++++++++++++++++++++++++++++++++++++++++
//妈妈咪呀 终于知道为啥错了,真是日了神狗哮天犬了. //日了神狗 哮天犬 日了神狗哮天犬 日了神狗哮天犬. //看来当你没有思路不知道哪里错了的时候 去吧程序在写一遍是很重要的 么么么么么么么哒. //当你想减少时间复杂度 而不得不 增加空间复杂度的时候 很可能因为 在减少时间复杂度的时候 把其中的变量给弄错. #include<stdio.h> void fuck(); int a[1111]; int main() { int b,q,t,i,year,year1,u,z,x; //第一次改动. fuck(); scanf("%d",&t); while(t--) { scanf("%d%d",&year,&b); z=b/97; x=b%97; if(year%4==0&&year%100!=0||year%400==0) u=-1; else u=0; year1=year%400;// 在四百年为一个循环的年份里 是第几年..... year=year/400;//有几个四百年..... for(i=0;i<115;i++) { if(year1>a[i]&&year1<a[i+1]||year1==a[i]) { q=i; break; } } printf("%d\n",(z+year)*400+a[q+u+x]); } return 0; } void fuck() { int i,w; a[-1]=-4; for(i=0,w=0;i<500;i++) { if(i%4==0&&i%100!=0||i%400==0) a[w++]=i; } }
下面附上正确的代码
//想法挺简单的,不过也是一种很好的想法.但是就是时间复杂度比较高.上一个时间复杂度比较低, //但是 比较操蛋就是不对,也不知道咋回事. #include<stdio.h> int main() { int n; scanf("%d",&n); while(n--) { int a,b,i=0,num; scanf("%d%d",&a,&b); while(b!=0) { num=a+i; i++; if((num%4==0&&num%100!=0)||num%400==0) { b--; } } printf("%d\n",num); } return 0; }