project euler problem 19 数周末
2013-10-07 15:02
501 查看
Counting Sundays
Problem 19
You are given the following information, but you may prefer to do some research for yourself.1 Jan 1900 was a Monday.
Thirty days has September,
April, June and November.
All the rest have thirty-one,
Saving February alone,
Which has twenty-eight, rain or shine.
And on leap years, twenty-nine.
A leap year occurs on any year evenly divisible by 4, but not on a century unless it is divisible by 400.
How many Sundays fell on the first of the month during the twentieth century (1 Jan 1901 to 31 Dec 2000)?
|
思路:因为题目给出的是1900年的1月1日是星期一,所以1900年的最后一天算出来也是星期二,即对7余1;然后直接算就行了。
#include <iostream> #include <map> #include <string> #include <cstring> #include <cstdio> #include <cmath> #include <algorithm> using namespace std; int a[12]={31,28,31,30,31,30,31,31,30,31,30,31}; int cmp(int n) { if(n%4==0&&n%100!=0||n%400==0) return 1; return 0; } int main() { int sum=0,i,j,b=1; for(i=1901; i<=2000; i++) { if(cmp(i)) a[1]=29; else a[1]=28; //a数组是全局变量,所以要归源 for(j=0; j<12; j++) { b=(b+a[j])%7; if(b==5) sum++; //如果每个月加上上个月余下的对7取模余5的话,意思就是这个月的最后一天是星期六,那么下个月的第一天当然就是星期天啦 } } cout<<sum<<endl; return 0; }
相关文章推荐
- Project Euler Problem 19
- Project Euler Problem 19 Counting Sundays
- http://projecteuler.net/problem=19 [Answer:171]
- Project Euler problem 19
- Project Euler Problem 11: Largest product in a grid
- Project Euler Problem 32
- Project Euler Problem 16
- Project Euler Problem 71-80
- Project Euler Problem 50
- Project Euler problem 22
- Project Euler problem 53
- project euler Problem 33
- http://projecteuler.net/problem=17 [Answer:21124]
- Projecteuler Problem 1-10
- projecteuler problem 15 solution
- Project Euler Problem 30
- Project Euler Problem 25
- Project Euler Problem 1
- Project Euler problem 11
- Project Euler problem 23