第幾個周五

2021-09-30 09:45:10 字數 1247 閱讀 3157

//獲得當月的資訊

time_t currtime(time(null));

tm curr;

localtime_s(&curr, &currtime);

/*蔡勒(zeller)公式(只適合於2023年10月15日之後的情形): 

w   =   y   +   [y/4]   +   [c/4]   -   2c   +   [13(m+1)/5]   +   d   -   1 

c:世紀數減一(年的高兩位數); 

y:年(年的低兩位數); 

13、14月來計算,比如2023年1月1日要看作2023年的13月1日來計算); 

d:日; 

代表取整,即只要整數部分。 

w:星期;w對7取模得:0-星期日,1-星期一,2-星期二,3-星期三,4-星期四, 

5-星期五,6-星期六 

注意負數不能按習慣的餘數的概念求餘數,只能按數論中的餘數的定義求餘。為了 

方便計算,我們可以給它加上乙個7的整數倍,使它變為乙個正數。 

*///

int year= curr.tm_year+1900;

int month=curr.tm_mon+1;

int mday=1;//當月1號星期幾

if ( month < 3 ) 

int c = int(year / 100), y = year - 100 * c;

int w = int(c / 4) - 2*c +y +int(y/4) +(26 * (month + 1)/10 ) + mday - 1;

w = ( w % 7 + 7 ) % 7; 

w=(w==0)?7:w;

int firstfridy=(w<=5)?(5-w+1):(9-w+4);

int last=firstfridy+14;

cout//int cardinar=0;

//if(w<2)

//cardinar=w+6;

//else

//   cardinar=w-1;

//求的第幾周   星期幾

//bool  t1=(cardinar+curr.tm_mday)/7+1>=3;

cout<<((cardinar+curr.tm_mday)/7)+1<<"周  ";

//bool  t2=((cardinar+curr.tm_mday)%7)>=5;cout<<"周"<<((cardinar+curr.tm_mday)%7)

輸出第幾個到第幾個素數

if flag 0 counter 發現乙個素數 if flag 0 counter m counter n if counter n break return 0 這題耗費了我將近兩天的時間,各種小細節層出不窮。可能也是因為很久沒有上手的原因,除了很多問題。首先最大的乙個錯誤,就是flag 1 這...

第幾個質數

按需輸出第k個質數,要找的質數靠後時,所需時間較長,這裡給出幾種最基本的求第k個質數的方法 法一 include include include include include 生成質數表 int printprimelist int arr if i tmp 1 尋找完畢 for i 0 i pr...

我排第幾個?

時間限制 1000 ms 記憶體限制 65535 kb 難度 3 描述 現在有 abcdefghijkl 12個字元,將其所有的排列中按字典序排列,給出任意一種排列,說出這個排列在所有的排列中是第幾小的?輸入 第一行有乙個整數n 0 輸出 輸出乙個整數m,佔一行,m表示排列是第幾位 樣例輸入 3 a...