原题链接:STIPC-001_B.小郭还想做签到
B.小郭还想做签到
题目背景
怎么样,签到题很简单吧,复制一下就 A C AC AC ( A c c e p t Accept Accept ,即答对问题)了!因此,小郭做完了刚刚那道签到题以后,他还想再做一道。于是他的好基友小马大发慈悲,又出了一道题,下面让我们看看吧!
题目描述
今天是 2021 年 5 月 20 日 2021年5月20日 2021年5月20日,是小马最爱的日子,于是他问小郭 2001 年 7 月 29 日 2001年7月29日 2001年7月29日 到今天已经过去了多少天,假设过去了 x x x 天。之所以小马问小郭这个问题,是因为那天是小马的生日。同时,给你一个整数 n n n ,要求你输出 x + n x + n x+n 。
输入格式
输入一个整数 n n n 。
输出格式
输出一个整数。
输入输出样例
无
说明/提示
数据范围:
对于 60 % 60 \% 60% 的数据, − 1 0 5 ≤ n ≤ 1 0 12 -10^{5} \le n \le 10 ^{12} −105≤n≤1012。
对于 100 % 100 \% 100% 的数据, − 1 0 5 ≤ n ≤ 1 0 18 -10^{5} \le n \le 10^{18} −105≤n≤1018。
题目解析:
本题只需算出2001年7月29日到2021年5月20日有几天即可。可以手算(或打代码)得出,总共有 :
(2 + 31 + 30 + 31 + 30 + 31) +5 * 366(5个闰年)+ 14 * 365(14个平年) + (31 + 28 + 31 + 30 + 20 )= 7235 天。
你以为这样就做完了吗?当然不是,小郭的签到题没有那么简单啦!在这里挖了一个小坑,要注意数据范围:
对于
60
%
60 \%
60% 的数据,
−
1
0
5
≤
n
≤
1
0
12
-10^{5} \le n \le 10 ^{12}
−105≤n≤1012。
对于
100
%
100 \%
100% 的数据,
−
1
0
5
≤
n
≤
1
0
18
-10^{5} \le n \le 10^{18}
−105≤n≤1018。
许多同学将 n n n 定义为 i n t int int 型,只得到了 60 60 60 分,是因为 i n t int int 的范围为 − 2147483648 ~ 2147483647 ( − 2 31 ~ 2 31 − 1 ) -2147483648 ~2147483647(-2^{31} ~2^{31}-1) −2147483648~2147483647(−231~231−1),大约为 1 0 10 10^{10} 1010 数量级,明显不满足题目要求的 1 0 18 10^{18} 1018 数量级。因此需要使用数据类型 l o n g long long i n t int int 来定义 n n n 。
AC代码(C++):
#include<iostream>
using namespace std;
int main() {
long int n;
cin >> n;
cout << n + 7235;
return 0;
}