USACO 1.1.3 Friday the Thirteenth

比较简单,直接模拟,需要注意闰年的判断和对不同月份日期的处理。

代码如下:


/*
ID: michael139
LANG: C
PROG: friday
*/
#include<stdio.h>
#include<string.h>
int is_leapYear(int y);
int main () {
    FILE *fin  = fopen ("friday.in", "r");
    FILE *fout = fopen ("friday.out", "w");
    int n,i,j,cur,count[7];
    while (fscanf(fin,"%d",&n) != EOF) {
        memset(count,0,sizeof(count));
        cur = 2;//Monday
        for (i=1900;i<=1900+n-1;i++) {
            for (j=1;j<=12;j++) {
                cur += 12;
                count[cur%7] ++ ;
                if (j==1 || j==3 || j==5 || j==7 || j==8 || j==10 || j==12) {
                    cur += 19;
                } else if (j==4 || j==6 || j==9 || j==11) {
                    cur += 18;
                } else {
                    if (is_leapYear(i)) cur += 17;
                    else cur += 16;
                }
            }
        }
        for (i=0;i<7;i++) {
            fprintf(fout,"%d",count[i]);
            if (i!=6) fprintf(fout," ");
        }
        fprintf(fout,"\n");
    }
    return 0;
}
int is_leapYear(int y) {
    return (y%4==0) && (y%100!=0 || y%400==0);
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值