赞
踩
题目来源:2023 年 12 月 CCF GESP C++ 一级 编程题 第一题
题目描述:
今天是星期 X,小杨还有 N 天就要考试了,你能推算出小杨考试那天是星期几吗?(本题中使用 7 表示星期日)
输入:
输入 2 行,第一行一个整数 X( 1 < = X < = 7 1<=X<=7 1<=X<=7)
第二行一个整数 N ( 1 < = N < = 364 1<=N<=364 1<=N<=364)。
输出:
输出一个整数,表示小杨考试那天是星期几。
特别提醒:
在常规程序中,输入、输出时提供提示是好习惯。但在本场考试中,由于系统限定,请不要在输入、输出中附带任何提示信息。
样例输入 1:
1
6
样例输出 1:
7
样例解释 1:
今天是星期 1,那么 6 天后就是星期日,星期日在本题中用 7 表示。
样例输入 2:
5
3
样例输出 2:
1
样例解释 2:
今天是星期 5,那么 3 天后就是星期 1。
第一步:完成输入部分:
一共两行,第一行一个整数 X,第二行一个整数 N。
N 和 X 数据范围分别是
1
<
=
X
<
=
7
1<=X<=7
1<=X<=7 和
1
<
=
N
<
=
364
1<=N<=364
1<=N<=364,在 int 范围内。
所以,要注意输入的顺序哦,先 X 再 N。
int N,X;
cin>>X>>N;
输入很简单完成!
通过分析 X 表示星期 X,N 表示过了 N 天。
按样例输入的意思,如果是 5 3,则代表星期五,过了 3 天。
如下图中的红色 5,过 3 天,即绿色,到了 8,对应即星期一,输出 1。
发现刚好 5+3 = 8,8 ÷ 7 的余数刚好是 1,刚好也是代表样例输出,即 (N+X)%7。
但有个缺点:余数只有 0~6,并不能代表星期日。
而余数 0 代表的也刚好是 7,即星期日。
所以可以对 0 进行特殊判断。
int ans;//最后结果
ans=(N+X)%7;
if(ans>=1&&ans<=6)
{
cout<<ans;
}
else
{
cout<<7;
}
即完成!
这种方法,代码量可能会比较大,所以可以根据数学规律进行解答,即 (N + X - 1) % 7 + 1 。
直接输出这个公式即可。
int ans;
ans=(N + X - 1) % 7 + 1;
cout<<ans;
#include<iostream> using namespace std; int main() { int N,X; cin>>X>>N; int ans;//最后结果 ans=(N+X)%7; if(ans>=1&&ans<=6) { cout<<ans; } else { cout<<7; } return 0; }
#include<iostream>
using namespace std;
int main()
{
int N,X;
cin>>X>>N;
int ans;
ans=(N + X - 1) % 7 + 1;
cout<<ans;
return 0;
}
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。