——比較簡單的高精乘,為多位乘多位做鋪墊
題目描述
傳說古代印度有個喜歡下棋的國王叫舍罕,而宰相達依爾是個聰明的大臣,發明了西洋棋。國王玩得愛不惜手,決定獎賞宰相。達依爾說:陛下,我別無他求,請你在這張棋盤的第乙個格仔裡賞我一粒麥子;在第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輸出樣例 複製
題意很簡單,不需要什麼思路,就是高精乘和加的結合,特別麻煩。
麻煩到一種境界,我也是硬敲了八十多行才過得。注意它最後不只會進一位,要用while迴圈進製。#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
}
高精乘 大數乘 詳解
高精乘就是兩個比較大的數字相乘,結果超過了基本型別的表示範圍,所以不能直接用普通的資料型別相乘,所以我們要用字串來表示,所以我們來用stl裡的string來表示字串.include using namespace std include define maxlen 100 string sum st...
高精加 高精乘
高精度演算法是每個初學者的入門必備,在我們做題目的時候,總會遇到一下精度太高的問題,即使用了long long也遠遠不夠。所以學習高精度也是很有必要的。本篇文章就以下面這道題為例子,簡單介紹一下高精加和高精乘。洛谷原題 洛谷部落格題解 本蒟的思路就是高精乘 高精加,就是把高精乘的模板套上去接著套高精...
補碼一位乘和補碼二位乘
補碼一位乘 回顧原碼的一位乘 原碼一位乘是數值位之間的計算,計算之前需要對被乘數取絕對值,符號位單獨處理 而補碼乘法的符號位是計算過程中產生的,因此不需要對被乘數取絕對值。被乘數和部分積均取2位符號位,因此乘數和被乘數均要在最高位擴位。補碼擴位原則 正數補0,負數補1.乘數取一位附加位,作為乘數的最...