---恢復內容開始---
時間限制:c/c++ 1秒,其他語言2秒
空間限制:c/c++ 32768k,其他語言65536k
64bit io format: %lld
牛牛剛學習了輸入輸出,他遇到了一道這樣的題目。
輸入2個整數a和b
保證輸入的a和b在long long範圍之內,即滿足
-9223372036854775808 <= a, b <= 9223372036854775807
計算a+b的值,即這兩個數字的和。
如果a+b在long long範圍之內,即滿足
-9223372036854775808 <= a + b <= 9223372036854775807
那麼輸出一行乙個整數表示a+b的結果。
如果a+b不在long long範圍之內,即越界了,那麼輸出"hello, %lld\n",包含引號。
具體可以參見樣例。
輸入只有一行,包含用空格分開的兩個整數,表示a和b。
如果a+b在long long範圍之內,輸出一行乙個整數,表示a+b的結果;否則輸出"hello, %lld\n",包含引號。示例1
複製
-9223372036854775808 9223372036854775807複製
-1示例2複製
9223372036854775807 1複製
"hello, %lld\n"
正確計算a+b可以得到50分正確輸出"hello, %lld\n"也可以得到50分
這道題看似是一道高精度計算,但是我們並不需要利用高精度(主要是自己考試的時候寫不出來。。。。。)
所以我們要作的巧妙一些。
首先根據題目要求定義乙個long long 的型別,隨後,我們就可以直接進行判斷了。
因為計算機在你的數越界了以後,就會輸出乙個負整數,所以我們只需要判斷a+b是不是最後相加成了乙個負整數,所以我們的問題也就迎刃而解了。
同樣的,對於兩個負數相加的時候,只需要判斷計算的結果是不是乙個正數。
就是這樣對於判斷的過程就解決了。
但是。。
在我們要輸出"hello, %lld\n"的時候,我們的問題又來了,因為「」 是不容易輸出的。
而且\也會代表著換行,會出現編譯錯誤。
解決方法也不難,我們只需要運用一下char()就可以了。
char(34)=" char(92)=\
示範如下:
#include//萬能標頭檔案
本題**:
#includeusingnamespace
std;
long
long a,b,n,m,sum=9223372036854775807,ans=-9223372036854775808
;int
main()
else cout
}
C 牛客網普及組第二次測試B
時間限制 c c 1秒,其他語言2秒 空間限制 c c 32768k,其他語言65536k 64bit io format lld 牛牛最近學習了質數的概念。質數指在大於1的自然數中,除了1和它本身以外不再有其他因數。輸入乙個n,輸出小於等於n最大的質數。輸入乙個整數n輸出小於等於n的最大的質數示例...
第二次c 試驗測試
通過上網查閱之後了解了一些預處理器的知識。line 指令可能由生成過程中的自動中間步驟使用。例如,如果行從原始的源 檔案中移除,但是您仍希望編譯器基於檔案中的原始行號生成輸出,則可以移除行,然後用 line 模擬原始行號。line hidden 指令對偵錯程式隱藏若干連續的行,這樣當開發人員在逐句通...
C 第二次作業
1 例題 功能 布林型別使用舉例 include includeusing namespace std int main bool flag true cout 功能 賦值表示式語句的使用 includeusing namespace std int main int a,b,c,d a 4 b a...