lightoj-1024
#include#include#include#includeusing namespace std;
const int maxn = 100010;
int ans[maxn], cnt[maxn], len;
int fun(int x,int y)//x代表因子 y代表這個因子出現的次數
void multiply(int fact)
// for(int i=len;i>=0;i--)
// cout << ans[i] <<":";
// cout << endl;
int tmp = ans[len];
while(tmp)//分解最後那個數,因為最後可能不是一位數,大數長度增加就是在這裡記錄的
// for(int i=len;i>=0;i--)
// cout << ans[i] <<"^";
// cout << endl;
}int main()
}ans[0] = len = 1;
for(int i = 2; i <= 10000; i ++) if(cnt[i]) multiply(fun(i, cnt[i]));
printf("case %d: ", ++case);//上面的迴圈是把所有最高次因子乘起來
for(int i = len - 1; i > 0; i --) printf("%d", ans[i]);//按位輸出大數
printf("%d\n", ans[0]);
}return 0;}/*
5 4 3 5 7 11
*/
網上學來的,自己加了注釋便於理解。-> 演算法 高精度計算乘法1(高精度乘單精度)
題目描述 高精度乘單精度,a b。a是乙個很大的非負整數,但不超過240位,b是乙個非負整數不超過10000,求a b。高精度乘單精度的數學實現 1 2 5 25 25 50 125 諸位進製 3 1 2 512 5 2525 5012531 25實現步驟 1 string s讀入高精度數,int ...
高精度乘單精度
沒壓位的 舉個例子,12345 5 ans 5 4 3 2 1 y 5一變 25 4 3 2 1 x 0 5 25 10 4 3 2 1 x 2 25 10 二變 5 22 3 2 1 x 0 5 2 22 10 3 2 1 x 2 22 10 三變 5 2 17 2 1 x 0 5 2 7 2 1...
高精度乘單精度
沒壓位的 舉個例子,12345 5 ans 5 4 3 2 1 y 5一變 25 4 3 2 1 x 0 5 25 10 4 3 2 1 x 2 25 10 二變 5 22 3 2 1 x 0 5 2 22 10 3 2 1 x 2 22 10 三變 5 2 17 2 1 x 0 5 2 7 2 1...