赞
踩
小蓝计划在某天的日期中出现 11 时跑 55 千米,否则只跑 11 千米。注意日期中出现 11 不仅指年月日也指星期。
请问按照小蓝的计划,20232023 年小蓝总共会跑步锻炼多少千米?例如,55 月 11 日、11 月 1313 日、1111 月 55 日、44 月 33 日 (星期一) 小蓝会跑 55 千米,而 55 月 2323 日小蓝会跑 11 千米 (示例日期均为 2023 年)
思路: 知道2023年是平年,四月三日是星期一 , 求出到四月三日一共的天数,再求七天的余数. 根据这个余数可以判断某天是否为星期一
所以,大致思路如下
- #include <iostream>
- using namespace std;
- int DAY(int month, int day)//由月和日,直接求天数
- {
- int add = 0;
- int M[] = { 0,31,28,31,30,31,30,31,31,30,31,30,31 };
- for (int i = 0; i < month; i++)
- {
- add += M[i ];
- }
- add += day;
- return add;
- }
- int main()
- {
- int b = DAY(4, 3) % 7;//已知(4,3)为星期一,求余数
- int M[] = { 31,28,31,30,31,30,31,31,30,31,30,31 };
- int day;
- int c = 0;//重复的
- int d = 0;//all 1
- int e = 0;//all 2
- for ( int x = 1; x <=12; x++)
- {
- for (int y = 1; y <=M[x-1]; y++)
- {
- if (x == 1 || x/10==1 || y / 10 == 1 || y % 10 == 1)
- {
- d++;//月,日总数
- day = DAY(x, y);
- if (day % 7 == b)
- {
- c++;//重复的
- }
- }
- }
- }
- for (int i = 1; i <= 365; i++)//求星期一总数
- {
- if (i % 7 == b)
- {
- e++;
- }
- }
- int f = d - c + e;//求总和
- f = f * 5 + 365 - f;
- cout << f<< endl;
- return 0;
- }

Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。