藍橋杯練習

2021-10-25 19:54:44 字數 1499 閱讀 6092

題目完成時間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...