[usaco]Friday the Thirteenth题解
来源:互联网 发布:mysql语句区分大小写吗 编辑:程序博客网 时间:2024/05/21 06:29
题目:
输入一个年份n,统计从1900年开始的n年中每个月13号中,周一周二……各有多少个。例如输入20,表示1900到1919二十年240个月的13号中,分别有36 33 34 33 35 35 34 个星期六,星期日,星期一……。
题解:
本体数据不大,故采用模拟日期,即一天一天过去,碰到13号就把对应星期几的数组元素+1 。首先根据年份计算闰年,然后计算某年某月的天数,二月为28+year(y)天。然后在主函数里,日期d变量每次加1,满了当年当月的天数之后回到1,然后月份+1;月份满12之后回到1,同时年份+1;直到年份到1900+n停止。同时星期数不断1到7循环。
代码:
/*
ID: xcwhkh1
LANG: C
TASK: friday
*/
#include <stdio.h>
#include<string.h>
int year(int y)
{
if((y%4==0&&y%100!=0)||y%400==0)
return 1;
else
return 0;
}
int month(int m,int y)
{
if(m==1||m==3||m==5||m==7||m==8||m==10||m==12)
return 31;
if(m==4||m==6||m==9||m==11)
return 30;
if(m==2)
return 28+year(y);
}
int main () {
FILE *fin = fopen ("friday.in", "r");
FILE *fout = fopen ("friday.out", "w");
int y=1900,m=1,d=1,w=1,n;
int wd[7];
for(int i=0;i<7;i++)
wd[i]=0;
fscanf(fin,"%d",&n);
while(y<1900+n)
{
w++;
if(w==8)
w=1;//计算星期
d++;
if(d>month(m,y))
{
d=1;
m++;
}
if(m>12)
{
m=1;
y++;
}
if(d==13)
wd[w-1]++;//每逢13号 星期某+1
}
fprintf(fout,"%d %d %d %d %d %d %d\n",wd[5],wd[6],wd[0],wd[1],wd[2],wd[3],wd[4]);
return 0;
}
ID: xcwhkh1
LANG: C
TASK: friday
*/
#include <stdio.h>
#include<string.h>
int year(int y)
{
if((y%4==0&&y%100!=0)||y%400==0)
return 1;
else
return 0;
}
int month(int m,int y)
{
if(m==1||m==3||m==5||m==7||m==8||m==10||m==12)
return 31;
if(m==4||m==6||m==9||m==11)
return 30;
if(m==2)
return 28+year(y);
}
int main () {
FILE *fin = fopen ("friday.in", "r");
FILE *fout = fopen ("friday.out", "w");
int y=1900,m=1,d=1,w=1,n;
int wd[7];
for(int i=0;i<7;i++)
wd[i]=0;
fscanf(fin,"%d",&n);
while(y<1900+n)
{
w++;
if(w==8)
w=1;//计算星期
d++;
if(d>month(m,y))
{
d=1;
m++;
}
if(m>12)
{
m=1;
y++;
}
if(d==13)
wd[w-1]++;//每逢13号 星期某+1
}
fprintf(fout,"%d %d %d %d %d %d %d\n",wd[5],wd[6],wd[0],wd[1],wd[2],wd[3],wd[4]);
return 0;
}
阅读全文
0 0
- [usaco]Friday the Thirteenth题解
- Friday the Thirteenth(USACO)
- usaco--Friday the Thirteenth
- [USACO] Friday the Thirteenth
- usaco Friday the Thirteenth
- USACO Friday the Thirteenth
- USACO:Friday the Thirteenth
- USACO -Friday the Thirteenth
- USACO Friday the Thirteenth
- USACO Friday the Thirteenth
- USACO--Friday the Thirteenth
- usaco Friday the Thirteenth
- usaco Friday the Thirteenth
- usaco Friday the Thirteenth
- USACO 1.1-Friday the Thirteenth
- usaco 1.1:Friday the Thirteenth
- USACO 1.1 Friday the Thirteenth
- USACO之Friday the Thirteenth
- Java多线程(四)- 协调同步线程
- LedHAL实例架构分析(Led字符型驱动)
- Python中批量改名
- DevExpress学习系列(控件篇):GridControl的基本应用
- 机房重构--视图的应用
- [usaco]Friday the Thirteenth题解
- 《荒野求生》告诉我们的
- Linux下scala安装
- ffmpeg错误码
- Java的socket基本操作
- 从零开始搭建Vue开发环境
- 优化程序结构:避免回调地狱
- __I、 __O 、__IO是什么意思?
- Window下的Shell:PowerShell