【日期】确定母亲节
【日期】確定母親節(jié)
母親節(jié)是每年的五月第二個星期天,針對輸入的年份,計算該年的哪一天是母親節(jié)。
輸入:
年份
輸出:
日期(5月的哪一天)
樣例:
| 1 | 2014? | 11? | 0 |
| 2 | 2015? | 10? | 0 |
| 3 | 2012? | 13? | 0 |
思路
五月的第二個星期日,也就是說輸出范圍應該是屬于[1,14]的一個整數(shù),那我們不妨先計算出每年的五月十四日是星期幾再向前倒退對應天數(shù)就可以得到我們想要的結果,自然地,我們想到利用之前寫過的代碼 根據(jù)日期求星期
流程圖
代碼
#include<stdio.h> int a[13]={0,31,28,31,30,31,30,31,31,30,31}; int Weekday(int y){int d=14,m=5;if(y%4==0&&y%100!=0||y%400==0) a[2]=29; int ans=d,i; for(i=1;i<=m-1;i++){ ans+=a[i]; } int s,r; s=y-1+(y-1)/4-(y-1)/100+(y-1)/400+ans; return r=s%7; } int main() {int y; scanf("%d",&y);printf("%d\n",14-Weekday(y));return 0; }課外思考
這里我們將之前寫過的代碼當做了一個函數(shù),將原本的輸入月份和日期改為了直接賦值,那是否還能簡化這段代碼呢?
事實上,因為母親節(jié)必然在五月,所以我們已經(jīng)沒必要討論輸入的年份是否為閏年,因為五月已經(jīng)包括了二月,我們只需要算出N+1年總共的天數(shù)再減去245(每年五月十四之后的天數(shù),這是固定的)
代碼
#include<stdio.h> int main() {int y; scanf("%d", &y);int day;day = (y+(y)/4-(y)/100+(y)/400-245) %7;printf("%d\n", 14-day);return 0; }顯然代碼簡潔了不少,這說明在優(yōu)化此類問題的時候,從數(shù)學模型的角度入手是一個好的的切入點
總結
- 上一篇: ftp服务器文件不显示,ftp服务器不显
- 下一篇: word 文档密码 html,Word文