題目完成時間2023年3月16日
題目:計算機真是最傻的東西;他都不能計算大於10^65-1的a*b,請你幫這個「最傻」的東西過關,否則它就真的只認識1和0了。
輸入格式
共兩行;
第一行輸入乙個整數a;
第一行輸入乙個整數b。
輸出格式
共一行,乙個表示a*b的整數。
樣例輸入
2147483647
2147483647
樣例輸出
4611686014132420609
資料規模和約定
▲10^65-1 題解:豎式乘法怎麼算的實現就好了,不過有要注意的是乘完相加的時候要機的錯位,錯位的位置要正確,否則始終都加不對。
假設當前要計算111*11那麼豎式的結果是:
111111
1221
要注意的點是:豎式每多一行就是將起始的位置向後移動一位。所以我們每次計算後都要將當前值後移一位。那麼怎麼移動又是乙個點,生硬的將字串陣列後移一定會照成不必要的麻煩。所以我們只要將字串的起始位置定成負數就可以了,比如豎式的第二行起始位置就是-1,豎式第二行起始位置就是-2。依次類推。
還有乙個點要注意。我們的到的數都是反過來的,就是我們記錄乘法得到的數字是從後面開始的,所以我們最後讀取數字的時候要反過來讀。
以上就是這個題需要注意的點。
程式如下:
#include
#include
#include
// void nixu(char *num3)
// }
void
jia(
char
*num3,
char
*temp,
int index2)
else
if(index2 >=0)
++index1;
++index2;}if
(jin >0)
num3[index1]
='\0';}
intmain()
int len1 =
strlen
(num1)
;int len2 =
strlen
(num2)
;for
(int i = len2 -
1;i >=0;
--i)
if(jin >0)
temp[index]
='\0';if
(i == len2 -1)
else
}//nixu(num3);
for(
int i =
strlen
(num3)-1
;i >=0;
--i)
system
("pause");
return0;
}
於2023年3月17日15點14分完成部落格編寫,若發現錯誤望指正。 藍橋杯練習
k好數 問題描述 如果乙個自然數n的k進製表示中任意的相鄰的兩位都不是相鄰的數字,那麼我們就說這個數是k好數。求l位k進製數中k好數的數目。例如k 4,l 2的時候,所有k好數為11 13 20 22 30 31 33 共7個。由於這個數目很大,請你輸出它對1000000007取模後的值。輸入格式 ...
藍橋杯 基礎練習
basic 1 閏年判斷 給定乙個年份,判斷這一年是不是閏年。當以下情況之一滿足時,這一年是閏年 年份是4的倍數而不是100的倍數 年份是400的倍數。include using namespace std intmain basic 2 01字串 對於長度為5位的乙個01串,每一位都可能是0或1,...
藍橋杯 練習(2 23)
給出n個數,找出這n個數的最大值,最小值,和。第一行為整數n,表示數的個數。第二行有n個數,為給定的n個數,每個數的絕對值都小於10000。輸出三行,每行乙個整數。第一行表示這些數中的最大值,第二行表示這些數中的最小值,第三行表示這些數的和。51 3 2 4 55 2 111 n 10000。inc...