高精乘 一位乘多位

2021-10-18 12:44:52 字數 2767 閱讀 2289

——比較簡單的高精乘,為多位乘多位做鋪墊

題目描述

傳說古代印度有個喜歡下棋的國王叫舍罕,而宰相達依爾是個聰明的大臣,發明了西洋棋。國王玩得愛不惜手,決定獎賞宰相。達依爾說:陛下,我別無他求,請你在這張棋盤的第乙個格仔裡賞我一粒麥子;在第2個格仔裡賞我2粒麥子;在第3個格仔裡賞我4粒麥子;在第4個格仔裡賞我8粒麥子……依此類推直到64個格仔,按這張棋盤上各格應賞的麥子全賞給我吧。

國王聽了,覺得達依爾的要求並不高,說道:你能如願以償的。然而,國王卻不知道這個數字是多麼巨大啊!

你能幫助國王算算第n個格仔的麥子數量嗎?

輸入乙個正整數n(n<=100)。

輸出乙個數,表示第n個格仔的麥子數

輸入樣例 複製

5輸出樣例 複製

16題意很簡單讀懂,思路也很簡單,for迴圈乘2就行了,主要是考察高精多位乘單位。

#include

#include

using

namespace std;

string ans=

"1";

int n,x[

500]

,y[500];

intmain()

int c=ans.

size()

;for

(int i=

1;i<=c;i++)}

if(y[c+1]

!=0) ans="";

for(

int i=c;i>=

1;i--)}

cout

}

第一次用高精乘,覺得有點麻煩,**比較長。這裡高精乘最多進一位,所以不需要很多的處理。

題目描述

乙個整數的數字乘積根是這樣得到的:將此整數中的非零數字相乘,得到的結果再重複上述運算,直到只有一位數為止,此一位數即為原整數的數字乘積根。

例如:整數 99 , 99--> 9*9=81-->8*1=8 , 8 即為 99 的乘積根。
輸入

乙個n位的整數(n<=255)。

輸出有若干行,每行顯示每次數字相乘之後的結果,最後一行只有乙個一位數,即為n的乘積根。

輸入樣例 複製

【輸入樣例1】

99【輸入樣例2】

1203

輸出樣例 複製

【輸出樣例1】818

【輸出樣例2】

6相對上一題不過是多了拆分和,要注意的是,這裡不僅會進一位,會進很多位,要用除和mod來處理。

#include

using

namespace std;

string a;

string ch

(string n)

for(

int j=

1;j<=n.

size()

;j++

)int c=ans1.

size()

;for

(int i=

1;i<=c;i++)}

if(p[c+1]

!=0) ans1="";

for(

int i=c;i>=

1;i--)}

return ans1;

}int

main()

while

(a.size()

!=1)return0;

}

也是一道很麻煩的題,注意輸入後要特判,不然不會進迴圈就不會有輸出了。

題目描述

已知正整數n(n<=200),請程式設計計算 1!+2!+…+n! 的值。

注:n!=1 * 2 *… * (n-1) * n。

輸入乙個正整數n(n<=200)。

輸出一行,表示階乘和。

輸入樣例 複製

4輸出樣例 複製

題意很簡單,不需要什麼思路,就是高精乘和加的結合,特別麻煩。

#include

using

namespace std;

int a;

string ans="";

string jc

(int n)

int c=ans1.

size()

;for

(int i=

1;i<=c;i++)}

if(p[c+1]

!=0)}

ans1="";

for(

int i=c;i>=

1;i--)}

return ans1;

}string jia

(string a,string b)

for(

int i=

0;isize()

;i++

)long

long c=

max(a.

size()

,b.size()

);for(

int i=

1;i<=c;i++)}

while

(z[c+1]

!=0)

string giao;

giao="";

for(

int i=c;i>=

1;i--

)return giao;

}int

main()

cout

}

麻煩到一種境界,我也是硬敲了八十多行才過得。注意它最後不只會進一位,要用while迴圈進製。

高精乘 大數乘 詳解

高精乘就是兩個比較大的數字相乘,結果超過了基本型別的表示範圍,所以不能直接用普通的資料型別相乘,所以我們要用字串來表示,所以我們來用stl裡的string來表示字串.include using namespace std include define maxlen 100 string sum st...

高精加 高精乘

高精度演算法是每個初學者的入門必備,在我們做題目的時候,總會遇到一下精度太高的問題,即使用了long long也遠遠不夠。所以學習高精度也是很有必要的。本篇文章就以下面這道題為例子,簡單介紹一下高精加和高精乘。洛谷原題 洛谷部落格題解 本蒟的思路就是高精乘 高精加,就是把高精乘的模板套上去接著套高精...

補碼一位乘和補碼二位乘

補碼一位乘 回顧原碼的一位乘 原碼一位乘是數值位之間的計算,計算之前需要對被乘數取絕對值,符號位單獨處理 而補碼乘法的符號位是計算過程中產生的,因此不需要對被乘數取絕對值。被乘數和部分積均取2位符號位,因此乘數和被乘數均要在最高位擴位。補碼擴位原則 正數補0,負數補1.乘數取一位附加位,作為乘數的最...