friday解题报告 —— icedream61 博客园(转载请注明出处)
------------------------------------------------------------------------------------------------------------------------------------------------
【题目】 据说曾经的黑色星期五是13号?本题让我们看看13号与星期五是否比与别的日子更有缘。 给出正整数n,请告诉我在“1900年1月1日”到“1900+n-1年12月31日”中,星期一到星期天各自有多少个13号。 注意,输出时,顺序是周六、周日、周一、周二、周三、周四、周五,一共7个数,空格隔开。【数据范围】 n<=400【输入样例】 20【输出样例】 36 33 34 33 35 35 34------------------------------------------------------------------------------------------------------------------------------------------------【分析】 做法很简单,每个月都有13号,所以枚举所有的月份就好了。过程中判断一下平年闰年,保证每月日子别算错就好。------------------------------------------------------------------------------------------------------------------------------------------------【总结】 这题写完交上去WA,一看发现输出要求是周六放在第一个…… 改完交上去又WA,这次怎么也找不出错来,结果要来了DYZ的AC代码,发现自己change函数三个return没写进if的大括号里,手生啊! 吐槽:我的代码中有对n==0的特判,是因为我被USACO Translate上的翻译坑了……原题中n是正整数,被翻译成了非负数,我也是醉了……------------------------------------------------------------------------------------------------------------------------------------------------
【代码】
1 /* 2 ID: icedrea1 3 PROG: friday 4 LANG: C++ 5 */ 6 7 #include8 #include 9 using namespace std;10 11 int add[1+12]={ 0,31,28,31,30,31,30,31,31,30,31,30,31 };12 13 ifstream in("friday.in");14 ofstream out("friday.out");15 16 int n,r[7];17 18 void change(int y)19 {20 if(y%400==0) { add[2]=29; return; }21 if(y%100==0) { add[2]=28; return; }22 if(y%4==0) { add[2]=29; return; }23 add[2]=28;24 }25 void work()26 {27 cout<<"in work"<