1 条题解
-
0
C :
#include "stdio.h" int n,year,month,day; int count_year(int x) { if ((((year%4)==0)&&(year%100!=0))||(year%400==0)) return (366); else return (365); } int count_month(int x,int y) { int t; switch (month) { case 1 : case 3 : case 5 : case 7 : case 8 : case 10 : case 12 : t=31;break; case 2 : { t=28; if ((((y%4)==0)&&(y%100!=0))||(y%400==0)) t=29; break; } default :t=30; } return(t); } void work() { int sum=n; year=2000; month=1; day=1; while (n>364) { if (n<count_year(year)) break; n=n-count_year(year); year++; } while (n>28) { if (n<count_month(month,year)) break; n=n-count_month(month,year); month++; } day=day+n; printf("%d-",year); if (month<10) printf("0"); printf("%d-",month); if (day<10) printf("0"); printf("%d ",day); switch(sum-(sum/7)*7) { case 0:printf("Saturday\n");break; case 1:printf("Sunday\n");break; case 2:printf("Monday\n");break; case 3:printf("Tuesday\n");break; case 4:printf("Wednesday\n");break; case 5:printf("Thursday\n");break; case 6:printf("Friday\n");break; } } void main() { while (1) { scanf("%d",&n); if (n==-1) break; work(); } }
C++ :
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <math.h> #include <algorithm> #include <map> #include <queue> #include <stack> #include <iostream> using namespace std; int leapyear(int year) { if((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) return 1; return 0; } int monthofday(int month, int year) { if(month == 2) { if(leapyear(year) == 1) return 29; else return 28; } if(month % 2 == 0) { if(month <= 7) return 30; else return 31; } else { if(month > 7) return 30; else return 31; } } int main () { //freopen("A.in", "r", stdin); //freopen("A.out", "w", stdout); int n, m, i, j, k, len; int leap[2] = {365,366}; char DayOfWeek[7][10] = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"}; while(scanf("%d",&n) && n != -1) { int nn = n; int y = 2000, m = 1, d = 1; while(n >= leap[leapyear(y)]) { n -= leap[leapyear(y)]; y ++; } for(m = 1 ; m <= 12 ; m ++) { if(n >= monthofday(m,y)) n -= monthofday(m,y); else break; } for(d = 1 ; d < monthofday(m,y); d ++) { if(n > 0) n --; else break; } int mm = m /10; int dd = d / 10; printf("%d-%d%d-%d%d %s\n",y,mm,m%10,dd,d%10,DayOfWeek[(6+nn%7)%7]); } return 0; }
- 1
信息
- ID
- 1334
- 时间
- 2000ms
- 内存
- 128MiB
- 难度
- (无)
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者