題目大意:
給你n個數,讓你求他們的最小公倍數;
題目解析:
預處理把每個數的因數都分離出來,相同的因數取最大的,最小公倍數就是所有因數的最高次方相乘;
ac**:
#include#include#include#includeusing namespace std;
const int maxn = 100010;
int ans[maxn], cnt[maxn], len;
int fun(int x,int y)
void multiply(int fact)
int tmp = ans[len];
while(tmp)
}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;
}
高精度乘高精度
c a b a b均是高精度數 比如a 156,b 3,求a b 很容易知道答案是468,怎樣算的呢?首先讓3 6 18,然後向進一位,並且這位只保留8 讓3 5 進製1 16,然後向前進一位,並且這位只保留6 讓3 1 進製1 4,此時不向前進製,保留4 所以最終答案是468 通過這個例子我們再來...
高精度乘高精度
思路 用vector表示大整數,整數的低位存在陣列索引的低位 a x b c其中c的每一位 如第3位 是由a和b的相應位相乘累加,處理後得到 如 1 2,2 1 include using namespace std const int demical 10 void input string s,...
大數相乘「高精度乘低精度」和「高精度乘高精度」
二 高精度乘高精度 如下 由於計算機的儲存位元組有限,所以不能完整表示乙個很大整數的精確值,這時候就得用到其他的方法,稱之為高精度演算法。這裡的高精度乘法主要指按位模擬乘法,實際上就是模擬乘法的過程,也就是筆算的過程。高精度乘低精度,即乙個大數與乙個小於10000的數相乘,大數使用字串來進行儲存,較...