蓝桥杯2017初赛-外星日历-数论
生活随笔
收集整理的這篇文章主要介紹了
蓝桥杯2017初赛-外星日历-数论
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題目描述
某星系深處發現了文明遺跡。他們的計數也是用十進制。
他們的文明也有日歷。日歷只有天數,沒有年、月的概念。
有趣的是,他們也使用了類似“星期”的概念,只不過他們的一個星期包含了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的時候才可以!!!
那個給一個很大的數取模就變得很簡單了!!!
總結
以上是生活随笔為你收集整理的蓝桥杯2017初赛-外星日历-数论的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 绿豆稀饭的功效与作用、禁忌和食用方法
- 下一篇: 野葡萄酒的功效与作用、禁忌和食用方法