我也是无语了,想不出开哪里错了,先放到这里等一段时间不迷糊了 再去看看.或者给师傅看看.下面附上错误代码
#include<stdio.h> void leap(); int a[200]; int main() { int year,r,w,e,q,t,i,s,b,d,c; leap(); scanf("%d",&t); while(t--) { scanf("%d%d",&year,&d); if((year%4==0&&year%100!=0)||year%400==0) r=1; else r=0; w=d%97; e=d/97; c=year/400; b=year%400; for(i=0;i<150;i++) { if(a[i+1]>b&&a[i]<b||a[i]==b) { q=i; break; } } s=400*(c+e)+a[w+q-r]; printf("%d\n",s); } return 0; } void leap() { int i,w=0; for(i=0;i<450;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; }
时间: 2024-11-05 15:48:09