NYOJ 312 20岁生日
生活随笔
收集整理的這篇文章主要介紹了
NYOJ 312 20岁生日
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
20歲生日
時間限制:1000?ms ?|? 內存限制:65535?KB 難度:1 描述T行,每行一個數,表示此人從出生到20歲生日所經過的天數。如果這個人沒有20歲生日,就輸出-1。
樣例輸入參考代碼:
#include<stdio.h> int m[13]={0,31,28,31,30,31,30,31,31,30,31,30,31}; int leapyear(int x) //判斷閏年 {if((x%4==0&&x%100!=0)||x%400==0)return 1;return 0; } int count(int a,int b,int c) //判斷一年中的第幾天 {int s=0,i;if(a%4==0&&a%100!=0||a%400==0){for(i=1;i<b;i++)s+=m[i];if(b>2)return s+c+1; //注意閏年2月是29天else return s+c; }else{for(i=1;i<b;i++)s+=m[i];return s+c;} } int main() {int j,n,Y,M,D,sum,y,m,d;scanf("%d",&n);while(n--){scanf("%d-%d-%d",&Y,&M,&D);if(M==2&&D==29&&!leapyear(Y+20)){printf("-1\n");continue;}sum=0;if(leapyear(Y))sum+=366-count(Y,M,D);else sum+=365-count(Y,M,D);j=1;Y++;while(j<=20){if(leapyear(Y)&&j!=20)sum+=366;else if(!leapyear(Y)&&j!=20)sum+=365;else if(j==20)sum+=count(Y,M,D);Y++;j++;}printf("%d\n",sum); }return 0; }
總結
以上是生活随笔為你收集整理的NYOJ 312 20岁生日的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SegmentFault无法访问,因出现
- 下一篇: 看程序员如何给女朋友解释什么是锟斤拷?