大数算法与组合数学算法-ACM要点.ppt

大数算法与组合数学算法-ACM要点

大数运算与组合数学 問題 當有一個很大的整數要運算時, 如何算? 例如: 一個一佰位數的數字. int 最大只能到 232 約十個位數的十進位數字. 最簡單的方法 先看大數加法. 就是改成手動去算加法, 而不是由電腦算. 123456789123 + 234123467890 ------------------------------------ 寫成電腦程式 方法一: 使用陣列 (array) 例如: int a[100], b[100], sum[100]; 然後 sum[i]=a[i]+b[i]+c 記住, c 是進位(carry), 這邊我們要自行處理. 那輸入呢? 輸入成字串 再把字串分解成陣列中各個元素. 需要一個parse字串的副程式. void parse(char *s, int *a){ int i,j; j=strlen(s); for(i=0;ij;i++){ a[j-1-i]=s[0]-30; } } void add(int *a, int *b, int *sum){ int i,c; c=0; for(i=0;i100;i++){ sum[i]=a[i]+b[i]+c; if(sum[i]=10){

文档评论(0)

1亿VIP精品文档

相关文档