[USACO 1.1.3]黑色星期五 (水题再一道)
题目:http://hustoj.sinaapp.com/problem.php?id=1818
自1900年以来所有的13日的星期数统计
题目的输出貌似有误:七个在一行且相分开的整数,它们代表13日是星期六,星期日,星期一.....星期五的次数.
实际情况的输出是从周一到周日依次输出。
思路:我的做法比较朴素...把所有的天数遍历一遍。还好数据无误。
#include<stdio.h> int ans[7]={0}; int date=1,day=1; int main() { int n; int leap; scanf("%d",&n); for(int i=0;i<n;i++) { int year=1900+i; if((year%100!=0&&year%4==0)||(year%400==0)) leap=1; else leap=0; for(int j=1;j<=12;j++) { if(j==1||j==3||j==5||j==7||j==8||j==10||j==12) { for (int k=0;k<31;k++) { date=(date+1)%7; if(k==13) ans[date]++; } } if(j==4||j==6||j==9||j==11) { for (int k=0;k<30;k++) { date=(date+1)%7; if(k==13) ans[date]++; } } if(j==2) { if(!leap) { for (int k=0;k<28;k++) { date=(date+1)%7; if(k==13) ans[date]++; } } else { for (int k=0;k<29;k++) { date=(date+1)%7; if(k==13) ans[date]++; } } } } } for(int i=1;i<=6;i++) { printf("%d ",ans[i]); } printf("%d\n",ans[0]); }