题目描述
某星系深处发现了文明遗迹。他们的计数也是用十进制。
他们的文明也有日历。日历只有天数,没有年、月的概念。
有趣的是,他们也使用了类似“星期”的概念,只不过他们的一个星期包含了9天,为了方便,这里分别记为: A,B,C…H,I
从一些资料上看到,
他们的23日是星期E
他们的190日是星期A
他们的343251日是星期I
令人兴奋的是,他们居然也预见了“世界末日”的那天,当然是一个很大很大的数字
651764141421415346185
请你计算一下,这遥远的一天是该文明的星期几?
输出
输出一个大写字母表示答案
代码如下:
#include <iostream>
using namespace std;
typedef long long ll;int main() {ll n;cin >> n;printf("%c\n", n % 9 - 1 + 'A');return 0;
}
不能这样写:
#include <iostream>
using namespace std;
typedef long long ll;int main() {ll n;n = 651764141421415346185;printf("%c\n", n % 9 - 1 + 'A');return 0;
}
这样写的话答案是E,正确答案是G,本人认为这样写会错是因为数太大,超过了long long的范围,可是为什么用cin读入数据就可以,有哪位大佬解答一下吗?
2021.4.10
重新回来写这道题,发现其实两种写法都是错误的,第一种写法,用cin读入溢出的数的时候会被强制赋成最大值……答案对只是因为刚好最大值取余等于那个数而已……
那这题如果不用高精度要怎么写呢???
这里有个奇技淫巧!!!
其实我们可以发现,模9的时候有这样一个规律:
对X模Y,其实等于X每一位的数的和SUM模Y。
记住,这个方法只能模9的时候才可以!!!
那个给一个很大的数取模就变得很简单了!!!