`

【水题】USACO Friday the Thirteenth

阅读更多
进入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");
}
分享到:
评论

相关推荐

    USACO题目Friday the Thirteenth及代码解析

    "Friday the Thirteenth"是其中一道挑战题,目标是计算在指定年份范围内每个月13号落在一周中的哪一天的次数。这个问题涉及到日期和时间的计算,以及闰年的判断,对于理解和应用基础的算法知识有着较高的要求。 ...

    Friday the Thirteenth

    从给定的文件信息来看,这段代码是在解决一个与日期计算相关的问题,即“Friday the Thirteenth”,也就是计算在一段指定的时间范围内,每个月的13号是星期五的次数。这个问题源自USACO(美国计算机奥林匹克竞赛)的...

    USACO官网93题fps格式 OJ题库

    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] 回文平方数 ...

    USACO全部译题

    - 题目“FridaytheThirteenth”可能与日期和概率相关,而“BrokenNecklace”和“PalindromicSquares”涉及对称和数列的数学问题。这些问题要求参赛者对数学概念有较深的理解,并能够将其应用到编程中。 3. 动态规划...

    USACO所有题目题解

    本文主要解析其中三个题目:“Your Ride Is Here (ride)”,“Greedy Gift Givers (gift1)”,以及“Friday the Thirteenth (friday)”。 1. **Your Ride Is Here (ride)**: 这是一个相对简单的问题,属于"ad hoc...

    USACO题解整理版

    FridaytheThirteenth(friday)这题需要对日期和星期的计算有一定的理解。算法中通过数组记录每个月的天数,并考虑闰年,利用模运算求解每月13日对应的星期几。这个问题实际上运用了历法计算和模运算的知识。 ...

    USACO英汉对照题目

    1.1.3 "Friday the Thirteenth" 可能需要理解日期和时间处理,以及可能的数学计算。 1.1.4 "Broken Necklace" 可能涉及字符串操作和链表处理。 1.2.1 "Milking Cows" 可能与数组和排序有关,可能是优化挤牛奶的效率...

    USACO题解(NOCOW整理版)1

    具体包括了几个不同难度级别的问题,如“Your Ride Is Here”,“Greedy Gift Givers”,“Friday the Thirteenth”和“Broken Necklace”。每个问题的解析都提供了算法思想和解决方案,有的通过简单的数学计算,有...

    USACO chap1 题解

    #### FridaytheThirteenth(friday) - **题目概述**:题目要求计算在特定年份范围内每个月13日是星期五的次数。 - **解题策略**: - 利用模拟方法,根据1900年1月13日是星期六这一已知条件,逐月计算13日对应的...

    USACO(Train)解题报告.doc

    ### Chapter 1 Section 1.2 - Friday the Thirteenth (friday) 此题涉及到日期计算。通过模拟计算,可以按月或按年计算第13号是星期几。对于小规模数据,可以逐月处理;对于大规模数据,可以以年为单位,考虑闰年的...

    usaco题目的副本1

    在"Friday the Thirteenth"中,我们可以使用`Counter`来统计每个月第13号出现的频率。 4. **链表操作优化**:"Broken Necklace"的解决方案提到,可以通过将两个项链合并成一条直线来简化问题,从而避免频繁的单个...

    USACO全部题目

    #### Friday the Thirteenth 这是一个与日期相关的题目,要求找出特定月份中13号落在星期五的情况。这类问题可以通过模拟每个月的日历以及对7取余的方式来实现。此外,还需要考虑到闰年和平年的区别,这对于正确...

    第1章总结1

    同时,"Friday the Thirteenth"题目引入了模运算,"Broken Necklace"则涉及到数组的使用。 接着,1.2节重点是完整搜索,如"Milking Cows"中运用离散化技术,"Transformations"和"Name That Number"通过枚举解决,而...

Global site tag (gtag.js) - Google Analytics