SGU - 115
Time Limit: 250MS | Memory Limit: 4096KB | 64bit IO Format: %I64d & %I64u |
Description
First year of new millenium is gone away. In commemoration of it write a program that finds the name of the day of the week for any date in 2001.
Input
Input is a line with two positive integer numbers N and M, where N is a day number in month M. N and M is not more than 100.
Output
Write current number of the day of the week for given date (Monday ? number 1, ? , Sunday ? number 7) or phrase ?Impossible? if such date does not exist.
Sample Input
21 10
Sample Output
7
Author | : Michael R. Mirzayanov |
Resource | : PhTL #1 Training Contests |
Date | : January 2002 |
Source
看起来挺简单的一个题。。
但是我WA了3次,,哭%>_<%啊
要判断日期是否合法,不合法则输出Impossible,合法则输出所对应的星期几,而2001年第一天就是星期一,模7即可。。
AC代码:
#include <cstdio> #include <cstring> #include <algorithm> #include <iostream> #include <cmath> using namespace std; int a[13] = {0,31,28,31,30,31,30,31,31,30,31,30,31}; int judge(int n, int m) //判断日期是否合法 { if(n==1 || n==3 || n==5 || n==7 || n==8 || n==10 || n==12) { if(m<=31)return 0; } else if(n==4 || n==6 || n==9 || n==11) { if(m<=30)return 0; } else if(n==2) { if(m<=28)return 0; } else return 1; } int main() { int n, m; int flag = 0, ans = 0; scanf("%d %d", &n, &m); if(judge(m, n))flag = 1; else { for(int i=1; i<m; i++) { ans += a[i]; } ans += n; } if(flag) { printf("Impossible\n"); } else { ans %= 7; if(ans == 0) ans = 7; printf("%d\n", ans); } return 0; }
原文地址:http://blog.csdn.net/u014355480/article/details/41869591