2101 - 13号
很简单的一个问题,帮我们统计一下每个月的十三号是星期几。我们的计算的起点为1900年1月1日(包含这一天),计算终点为1900 + X - 1年 12月31日。输出
13号一共落在周一,周二,周三,周四,周五,周六,周日多少次
题目输入
第一行一个整数X (X ≤ 400)
题目输出
七个空格分开的整数,分别是13号落在周六,周日,周一,周二,周三,周四, 周五的次数
输入/输出样例
题目输入
20
题目输出
36 33 34 33 35 35 34
C语言解答
#include<stdio.h> int nianpanduan(int a) { if(a%100!=0&&a%4==0||a%400==0) return 1; return 0; } main() { int month[13]={0,12,31,28,31,30,31,30,31,31,30,31,30}; int mon,tue,wed,thu,fri,sat,sun,sum,i,j,n; while(scanf("%d",&n)!=EOF) { mon=0;tue=0;wed=0;thu=0;fri=0;sat=0;sun=0; for(i=1900,sum=0;i<1900+n;i++) for(j=1;j<=12;j++) { sum+=month[j]; if(j==3&&nianpanduan(i)==1) { sum++; } if(sum%7==0) mon++; if(sum%7==1) tue++; if(sum%7==2) wed++; if(sum%7==3) thu++; if(sum%7==4) fri++; if(sum%7==5) sat++; if(sum%7==6) sun++; if(j==12) sum+=19; } printf("%d %d %d %d %d %d %d\n",sat,sun,mon,tue,wed,thu,fri); } }
C++解答
/* ID:crazysona PROB:friday LANG:C++ */ #include <stdio.h> #include <stdlib.h> #include <string.h> int isleap(int y) { return y % 4==0 && (y % 100 != 0 || y % 400 == 0); } int mtab[] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; int mlen(int y, int m) { if(m == 1) return mtab[m]+isleap(y); else return mtab[m]; } int main(void) { int i, m, dow, n, y; int ndow[7]; //freopen("2.in", "r", stdin); //freopen("2.out", "w", stdout); while(scanf("%d", &n) != EOF){ for(i=0; i<7; i++) ndow[i] = 0; dow = 0; for(y=1900; y<1900+n; y++) { for(m=0; m<12; m++) { ndow[dow]++; dow = (dow+mlen(y, m)) % 7; } } for(i=0; i<7; i++) { if(i) printf(" "); printf("%d", ndow[i]); } printf("\n"); } return 0; }