這個公式可以根據日期計算這一天是星期幾,具體公式如下:
w= (d+2*m+3*(m+1)/5+y+y/4-y/100+y/400) mod 7
//這個函式返回的結果是0-6的整數,表示星期一到星期天
int getweeknumber(int year, int month, int day)
return ((day + 2 * month + 3 * (month + 1) / 5 + year + year / 4 - year / 100 + year / 400) % 7);
}
現在這道題還沒有ac,總體思路待寫完後再補充。
#include
#include
using
namespace
std;
int dayofmonth[2][13] = , };
//定義日期的結構體,用來判斷平年閏年,判斷某個日期是這週的第幾天
//這個方法要將每年的1,2月作為上一年的13,14月份
struct date
int week()
int w = (d + m * 2 + 3 * (m + 1) / 5 + y + y / 4 - y / 100 + y / 400) % 7;
return w + 1;
}date() {}
//定義輸出建構函式
date(int yy, int mm, int dd)
//定義結構體函式getnext(),獲得後一天的日期
date getnext()
//月和日為12.31則年往上加,月和日均設為1月1日
else
return t;
}//判斷是否為**處理的日期
//如果這天是週六週日則不為處理日期,如果這天是元旦、五
一、十一也不為處理日期
bool dealday()
//判斷是否為週末
bool isweekend()
};//判斷這兩天是否為相等的日期,如果年月日均相等,則是相同的日期
bool equals(date d1, date d2)
//判斷一年中有多少天交易日
int ansofyear(int year)
//如果是平年的話,52週多1天,即12.31如果是週末則非交易日多一天
else
//元旦+五一+國慶==11天的假期不交易
t2 = 11;
//判斷這三個假期是否和週末衝突,衝突的有幾天
if (date(year, 1, 1).isweekend())
t3 += 1;
for (i = 1; i<4; i++)
if (date(year, 5, i).isweekend())
t3 += 1;
for (i = 1; i<8; i++)
if (date(year, 10, i).isweekend())
t3 += 1;
//計算一年中多少個交易日
res = res - t1 - t2 + t3;
return res;
}int main()
//如果兩個日期相差一年以上,則先計算第乙個日期到下一年1.1之前的交易日
//再計算第二個日期的從1.1到該日期的交易日數
//最後再計算二者之間相差的年數之間的交易日
else
return0;}
//****於網路,注意消化理解
後續待補充…. 1008 二哥買期貨
對起始年份和結束年份,可以對每一天單獨判斷 對中間的每個整年,週末總的天數分為兩部分 1.每個整年恰有完整的52個周,所以至少有 2 52 天是週末 2.閏年時,366 7 2,需要判斷12 31和12 30是否為週末即可,平年需要判斷12 31是否為週末 對中間的每個整年,都有11天假日,注意週末...
1008 二哥買期貨
二哥想知道在一段時期內,一共有多少個交易日。交易日的限定如下 週六 週日不能交易 元旦期間 1月1日 不能交易 五一勞動節期間 5月1日至3日 不能交易 十一國慶節期間 10月1日至7日 不能交易 沒有在上述要求中提到的日期均可交易 第一行有乙個整數n,表示一共有n組資料。每組資料都有一行,是兩個用...
上海交大oj 1053 二哥的記憶體
二哥買了一台記憶體非常非常大的電腦,以至於二哥寫程式直接開了乙個 100,000 100,000 的陣列都跑得很順暢。這個陣列初始被清零,二哥在其中的 n 個位置賦了值,然後他做了 m 次操作,每次操作為以下三個指令之一 0 x y 交換陣列的 x 行與 y 行 1 x y 交換陣列的 x 列與 y...