ural1759_计算从公元元年1月1日到某年某月某日的天数

#include <iostream> #include<cstdio> #include<cmath> #include<cstring> using namespace std; struct node { int y,m,d; }; struct live { node birth,death; }p[101]; int a[]={0,31,28,31,30,31,30,31,31,30,31,30,31}; bool leap(int y) //判断润年 { if(y%400==0||y%4==0&&y%100!=0) return true; else return false; } int cal_year(int y) //从公元元年1月1日到y-1年12月31日的天数 { int i,count=0; for(i=0;i<y;i++) if(leap(i)) count++; return 365*y+count; } int cal_month(node q) //从1月1日到q.m月q.d日的天数 { int i; int ans=0; for(i=1;i<q.m;i++) ans+=a[i]; ans+=q.d; return ans; } int cal_date(node q) //从元年1月1日到某一年的天数 { if(q.m==1||q.m==2&&q.d<=29) return cal_year(q.y)+cal_month(q); else { if(leap(q.y)) { return cal_year(q.y)+cal_month(q)+1; } else return cal_year(q.y)+cal_month(q); } } char s[100]; int main() { int n; while(scanf("%d",&n)!=EOF) { int i; for(i=1;i<=n;i++) scanf("%d.%d.%d %s %d.%d.%d",&p[i].birth.d,&p[i].birth.m,&p[i].birth.y,s,&p[i].death.d,&p[i].death.m,&p[i].death.y); int max=0,index=1,temp; for(i=1;i<=n;i++) { temp=cal_date(p[i].death)-cal_date(p[i].birth); if(max<temp) { max=temp; index=i; } } printf("%d/n",index); } return 0; }  

你可能感兴趣的:(ural1759_计算从公元元年1月1日到某年某月某日的天数)