首页 > 代码库 > SGU - 115 - Calendar (基础题!)
SGU - 115 - Calendar (基础题!)
SGU - 115
Calendar
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; }
SGU - 115 - Calendar (基础题!)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。