日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

NYOJ 312 20岁生日

發布時間:2025/3/16 编程问答 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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岁生日的全部內容,希望文章能夠幫你解決所遇到的問題。

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