日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

NYOJ 312 20岁生日

發布時間:2025/3/16 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 NYOJ 312 20岁生日 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

20歲生日

時間限制:1000?ms ?|? 內存限制:65535?KB 難度:1 描述
路過這的20歲生日就要到了,他當然很開心,可是他突然想到一個問題,是不是每個人從出生開始,到達20歲生日時所經過的天數都是一樣的呢?似乎并不全都是這樣,所以他想請你幫忙計算一下他和他的幾個朋友從出生到達20歲生日所經過的總天數,讓他好來比較一下。 輸入
一個數T,后面T行每行有一個日期,格式是YYYY-MM-DD。如我的生日是1988-03-07。
輸出

T行,每行一個數,表示此人從出生到20歲生日所經過的天數。如果這個人沒有20歲生日,就輸出-1。

樣例輸入
1 1988-03-07
樣例輸出 7305 解題思路:先算出從出生到出生這年結束一共經過了多少天,然后加上從出生第2年到出生第19年每年的天數,最后加上20歲生日那年要經過多少天才是他的生日。 ? 注意:(1)、如果出生這年是閏年,而20年后不是閏年,輸出-1;(2)、出生這天為出生的第0天

參考代碼:

#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岁生日的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。