首页 > 代码库 > hdu 1201 18岁生日

hdu 1201 18岁生日

//拼凑思想   多的少的由第一年和最后一年补回 //注意:月>2月,第一年是闰年,减一天;18年是闰年,加一天#include<iostream>#include<cstring>#include<cstdio>#include<string>#include<cmath>#include<algorithm>using namespace std;bool isleapyear(int y){    if(y%400==0||(y%100!=0&&y%4==0)){       return true;    }    return false;}int main(){    int t;    string s;    cin>>t;    int sum;    while(t--){        cin>>s;        int y=(s[0]-0)*1000+(s[1]-0)*100+(s[2]-0)*10+s[3]-0;        int m=(s[5]-0)*10+s[6]-0;        int d=(s[8]-0)*10+s[9]-0;        if(m==2&&d==29){            cout<<-1<<endl;        }        else{            int i=0;            sum=0;            for(;i<18;i++){                if(isleapyear(y)){                    sum+=366;                }                else{                    sum+=365;                }                y++;            }            if(isleapyear(y-18)&&m>2){                    sum--;            }            else{                if(isleapyear(y)&&m>2){                   sum++;            }            }            cout<<sum<<endl;        }    }    return 0;}

 

hdu 1201 18岁生日