进入USACO要注册才可看题: http://train.usaco.org/usacogate
题目:【翻译版、是别处的网站】http://www.wzoi.org/usaco/13%5C303.asp
SAMPLE INPUT (file friday.in)
20
SAMPLE OUTPUT (file friday.out)
36 33 34 33 35 35 34
历法中的水题,不多说……
/*
ID: 1006100071
PROG: friday
LANG: C++
*/
#include <iostream>
#include <fstream>
#include <algorithm>
#include <string>
#include <set>
//#include <map>
#include <queue>
#include <utility>
#include <iomanip>
#include <stack>
#include <list>
#include <vector>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <cmath>
#include <ctime>
#include <ctype.h>
using namespace std;
int year[405]; //year[i]表示前i年有多少天
int month[13] = {0, 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
inline bool isleap (int y)
{
if (y % 4 == 0 && y % 100 != 0 || y % 400 == 0)
return true;
return false;
}
inline int days (int y, int m)
{
int j, day = year[y];
for (j = 1; j < m; j++)
{
if (j == 2 && !isleap (1900+y))
day += 28;
else day += month[j];
}
day += 13;
return day;
}
int main()
{
/*freopen ("friday.in", "r", stdin);
freopen ("friday.out", "w", stdout);*/
int i, j, n, ans[10] = {0};
for (i = 1; i <= 405; i++)
{
if (isleap (1900+i-1))
year[i] = year[i-1] + 366;
else year[i] = year[i-1] + 365;
}
scanf ("%d", &n);
for (i = 0; i < n; i++)
{
for (j = 1; j < 13; j++)
ans[days(i, j)%7]++;
}
printf ("%d %d", ans[6], ans[0]);
for (i = 1; i < 6; i++)
printf (" %d", ans[i]);
printf ("\n");
}
分享到:
相关推荐
"Friday the Thirteenth"是其中一道挑战题,目标是计算在指定年份范围内每个月13号落在一周中的哪一天的次数。这个问题涉及到日期和时间的计算,以及闰年的判断,对于理解和应用基础的算法知识有着较高的要求。 ...
从给定的文件信息来看,这段代码是在解决一个与日期计算相关的问题,即“Friday the Thirteenth”,也就是计算在一段指定的时间范围内,每个月的13号是星期五的次数。这个问题源自USACO(美国计算机奥林匹克竞赛)的...
3 [1.1] 黑色星期五Friday the Thirteenth 4 [1.1] 坏掉的项链 Broken Necklace 5 [1.2] 命名那个数字 Name That Number 6 [1.2] 挤牛奶Milking Cows 7 [1.2] 方块转换 Transformations 8 [1.2] 回文平方数 ...
- 题目“FridaytheThirteenth”可能与日期和概率相关,而“BrokenNecklace”和“PalindromicSquares”涉及对称和数列的数学问题。这些问题要求参赛者对数学概念有较深的理解,并能够将其应用到编程中。 3. 动态规划...
本文主要解析其中三个题目:“Your Ride Is Here (ride)”,“Greedy Gift Givers (gift1)”,以及“Friday the Thirteenth (friday)”。 1. **Your Ride Is Here (ride)**: 这是一个相对简单的问题,属于"ad hoc...
FridaytheThirteenth(friday)这题需要对日期和星期的计算有一定的理解。算法中通过数组记录每个月的天数,并考虑闰年,利用模运算求解每月13日对应的星期几。这个问题实际上运用了历法计算和模运算的知识。 ...
1.1.3 "Friday the Thirteenth" 可能需要理解日期和时间处理,以及可能的数学计算。 1.1.4 "Broken Necklace" 可能涉及字符串操作和链表处理。 1.2.1 "Milking Cows" 可能与数组和排序有关,可能是优化挤牛奶的效率...
具体包括了几个不同难度级别的问题,如“Your Ride Is Here”,“Greedy Gift Givers”,“Friday the Thirteenth”和“Broken Necklace”。每个问题的解析都提供了算法思想和解决方案,有的通过简单的数学计算,有...
Chapter 1 Section 1.1 Friday the Thirteenth (friday) 这道题的解决方案是使用模拟运算,按照月为单位计算,记录每个月的 13 日是星期几,然后输出结果。该算法的复杂度较低,适合小规模数据。当数据比较大时,...
#### FridaytheThirteenth(friday) - **题目概述**:题目要求计算在特定年份范围内每个月13日是星期五的次数。 - **解题策略**: - 利用模拟方法,根据1900年1月13日是星期六这一已知条件,逐月计算13日对应的...
### Chapter 1 Section 1.2 - Friday the Thirteenth (friday) 此题涉及到日期计算。通过模拟计算,可以按月或按年计算第13号是星期几。对于小规模数据,可以逐月处理;对于大规模数据,可以以年为单位,考虑闰年的...
在"Friday the Thirteenth"中,我们可以使用`Counter`来统计每个月第13号出现的频率。 4. **链表操作优化**:"Broken Necklace"的解决方案提到,可以通过将两个项链合并成一条直线来简化问题,从而避免频繁的单个...
#### Friday the Thirteenth 这是一个与日期相关的题目,要求找出特定月份中13号落在星期五的情况。这类问题可以通过模拟每个月的日历以及对7取余的方式来实现。此外,还需要考虑到闰年和平年的区别,这对于正确...
同时,"Friday the Thirteenth"题目引入了模运算,"Broken Necklace"则涉及到数组的使用。 接着,1.2节重点是完整搜索,如"Milking Cows"中运用离散化技术,"Transformations"和"Name That Number"通过枚举解决,而...