1008 二哥買期貨

2022-04-18 01:21:14 字數 2290 閱讀 4321

二哥想知道在一段時期內,一共有多少個交易日。**交易日的限定如下:

週六、週日不能交易

元旦期間(1月1日)不能交易

五一勞動節期間(5月1日至3日)不能交易

十一國慶節期間(10月1日至7日)不能交易

沒有在上述要求中提到的日期均可交易

第一行有乙個整數n,表示一共有n組資料。

每組資料都有一行,是兩個用空格分開的日期,分別為開始日期和結束日期。日期格式為yyyy-mm-dd(比如2010-11-11);資料保證開始日期不晚於結束日期。

對於所有資料:n

≤365

'>n≤365

對於30%的資料:日期範圍從2010-11-23至2012-12-21

對於70%的資料:日期範圍從1900-01-01至9999-12-31

輸出共n行,每行乙個整數,對應於一組資料。

每組資料需要輸出在指定日期區間內,共有多少個交易日;區間的開始和結束日期也算在內(如果是交易日的話)。

4

2010-11-18 2010-11-20

2010-01-01 2010-01-01

2010-05-01 2010-05-03

2010-10-01 2010-10-07

200

0

#include#include

using

namespace

std;

int isyeap(int

x)int dayofmonth[13][2]=;

struct

date

if(day>dayofmonth[month][isyeap(year)])}}

};int buf[10001][13][32

];int weekday(int y,int m,int

d)

return (d+2*m+3*(m+1)/5+y+y/4-y/100+y/400)%7;}

void

init()

}int

main()

else

}return0;

}

這是我的**,覺得沒有錯,資料也是對的,但提交就是runtime error,很迷。

附上ac的**:

#include #include 

using

namespace

std;

int dayofmonth[13]=,};

struct

date

intweek()

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)

date getnext()

else

return

t;

} bool

dealday()

bool

isweekend()

};

bool

equals(date d1,date d2)

int ansofyear(int

year)

else

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;

} intmain()

else

printf(

"%d\n

",res);

} return

0;

}

1008 二哥買期貨

對起始年份和結束年份,可以對每一天單獨判斷 對中間的每個整年,週末總的天數分為兩部分 1.每個整年恰有完整的52個周,所以至少有 2 52 天是週末 2.閏年時,366 7 2,需要判斷12 31和12 30是否為週末即可,平年需要判斷12 31是否為週末 對中間的每個整年,都有11天假日,注意週末...

交大oj 1008 二哥買期貨 C 總結

這個公式可以根據日期計算這一天是星期幾,具體公式如下 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 ...

1037 二哥買草

二哥在網上買乾草。他發現了一筆特殊的買賣。他每買一捆大小為a 1 a 1,000,000 的乾草,他就能免費獲得一捆大小為b 1 b a 的乾草,也就是說免費的那個必須大小是小於購買的那個。然而,這筆交易是有規定的 大的一捆乾草必須是高質量的,小的一捆是低質量的。二哥是個吝嗇鬼,他並不在意 隨便什麼...