posts - 64, comments - 4, trackbacks - 0, articles - 0

USACO Friday the Thirteenth

Posted on 2010-09-10 21:40 acronix 阅读(277) 评论(0)  编辑 收藏 引用 所属分类: qqy解题报告
//考察点: 纯模拟
//思路: 根据题目的意思努力计算天数  在考虑到闰年的时候需要把二月份的天数更新
//提交情况: 悲剧的2WA  问题的根源是freopen语句错误  文件名多了 file 
//收获: 提交的时候文件名不是"file"+" "+"name" 而是"name"
//经验: 以后操作一个数组的时候一定要初始化一次 用memset就行
//ACcode:
/*
ID: qiuqiyu1
PROB: friday
LANG: C++
*/
#include
<stdio.h>
#include
<memory.h>
#define BEGIN (1900)
#define FIRST_DAY (1)
int md[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};

bool isleap(int y)
{
    
if(y%400 == 0 || (y%4==0 && y%100!=0)) return true;
    
else return false;
}

int main()
{
    freopen(
"friday.in","r",stdin);
    freopen(
"friday.out","w",stdout);
    
int N,sumday[8];
    scanf(
"%d",&N);
    
int i,j,k,y;
    
int p=FIRST_DAY;
    memset(sumday,
0,sizeof(sumday));
    
for(i=0;i<N;i++)
    {
        y
=BEGIN+i;
        
if(isleap(y)) md[2]=29;
        
else md[2]=28;
        
for(j=1;j<=12;j++)
        {
            
for(k=1;k<=md[j];k++)
            {
                
if(k==13) sumday[p%7]+=1;
                p
++;
                
//printf("%d\n",p%7);
            }
        }
    }
    p
=FIRST_DAY;

    
/*for(i=0;i<7;i++)
    {
        if(i!=0) printf(" ");
        printf("%d",sumday[i]);
    }
    printf("\n");
*/

    printf(
"%d ",sumday[6]);
    
for(i=0;i<6;i++)
    {
        
if(i!=0) printf(" ");
        printf(
"%d",sumday[i]);
    }
    printf(
"\n");

    
return 0;
}

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理