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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

HDU 6112黑色星期五 蓝桥基拉姆森公式

發布時間:2025/4/16 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 HDU 6112黑色星期五 蓝桥基拉姆森公式 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

若某個月13號恰好是星期五,則這一天被稱為黑色星期五。已知某年的一月一日是星期w,并且這一年是閏年,
求出這一年所有13號那天是星期5的月份,按從小到大的順序輸出月份數字。(w=1..7)輸入輸入有多組,每組一行且為一個整數w, 指該年的一月一日是星期w。(1<=w<=7)輸出

每組數據輸出一行,從小到大輸出具有黑色星期五的月份,月份與月份之間用空格隔開。若沒有月份具有黑色星期五,則輸出NULL

?

用基姆拉爾森公式得到

約定下式中 y-年,m-月,d-日,w-星期

w=(d+m*2+3*(m+1)/5+y+y/4-y/100+y/400+1)mod7

特別需要注意的是,當月份為1月或者二月是,日期需要有所變動

舉個栗子,如果是1993-1-13,帶入上面公式的日期需要變換為 1992-13-13

如果是1993-2-13,那么需要變換為 1992-14-13

注意:w==0?7:w

#include<cstdio>
using namespace std;


int m[13] = {0,31,29,31,30,31,30,31,31,30,31,30,31};


int main()
{
? ? int mon;
? ? while(scanf("%d",&mon) == 1)
? ? {
? ? ? ?for(int i = 1; i <= 12; i ++)
? ? ? ?{
? ? ? ? ? ? ? ?if((12+mon)%7 == 5)
? ? ? ? ? ? ? ?{
? ? ? ? ? ? ? ? ? ?printf("%d",i);
? ? ? ? ? ? ? ? ? ?if(i != 12) printf(" ");
? ? ? ? ? ? ? ?}
? ? ? ? ? ? ? ?mon = (m[i]+mon)%7;?
? ? ? ?}?
? ? ? ?printf("/n");?
? ? }
? ? return 0;

}

HDU 6112:

?

今天是2017年8月6日,農歷閏六月十五。

小度獨自憑欄,望著一輪圓月,發出了“今夕何夕,見此良人”的寂寞感慨。

為了排遣郁結,它決定思考一個數學問題:接下來最近的哪一年里的同一個日子,和今天的星期數一樣?比如今天是8月6日,星期日。下一個也是星期日的8月6日發生在2023年。

小貼士:在公歷中,能被4整除但不能被100整除,或能被400整除的年份即為閏年。

?

?

Input

第一行為T,表示輸入數據組數。

每組數據包含一個日期,格式為YYYY-MM-DD。

1 ≤ T ≤ 10000

YYYY ≥ 2017

日期一定是個合法的日期
?

?

?

Output

對每組數據輸出答案年份,題目保證答案不會超過四位數。

?

?

Sample Input

3 2017-08-06 2017-08-07 2018-01-01

?

?

Sample Output

2023 2023 2024

?

?

Source

2017"百度之星"程序設計大賽 - 初賽(A)

?

#include <iostream> #include <cstring> #include <cstdio> using namespace std; int YYY,MM,DD,t; bool run_year(int y) {if(y%4==0&&y%100!=0||y%400==0){return true;}return false; } bool panduan2(int y) {if(!run_year(y)&&run_year(YYY)&&MM==2&&DD==29)return true; return false; } int panduan1(int y,int m,int d) {if(m==1||m==2){y-=1;m+=12;}int w=(d+m*2+(m+1)*3/5+y+y/4+y/400-y/100+1)%7;return w==0?7:w; }int main(){int Y,M,w;cin>>t;while(t--){cin>>YYY; getchar();cin>>MM; getchar();cin>>DD; getchar();w=panduan1(YYY,MM,DD);int ww;for(int i=YYY+1; ;++i){if(panduan2(i))//在這兒要對一個閏年的2-29號特殊判斷一下 continue; ww=panduan1(i,MM,DD);if(w==ww){cout<<i<<endl;break;}}}return 0; }

output

standard output

已知 2011 年 11 月 11 日是星期五,問 YYYY 年 MM 月 DD 日是星期幾?注意考慮閏年的情況。尤其是逢百年不閏,逢 400 年閏的情況。

Input

輸入只有一行 YYYY MM DD

Output

輸出只有一行 W

W= (d+2*m+3*(m+1)/5+y+y/4-y/100+y/400)%7+1?
  (計算出的結果直接是對應的星期幾) ,當month=1或2時,需要將其改為month+12并且year-1

#include<bits/stdc++.h> using namespace std; int n; void solve() {int y,m,d;scanf("%d %d %d",&y,&m,&d);if(m==1||m==2) m+=12,y-=1;int w=(d+2*m+3*(m+1)/5+y+y/4-y/100+y/400)%7+1;cout<<w<<endl; } int main() {solve(); return 0; }

?

總結

以上是生活随笔為你收集整理的HDU 6112黑色星期五 蓝桥基拉姆森公式的全部內容,希望文章能夠幫你解決所遇到的問題。

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