大整數 問題

2022-03-15 14:13:24 字數 2129 閱讀 6359

高精度除法:(利用了 減法)

原理 :

例如 a=13455 除以 b=3

先把 3 增大為 30000

不夠減 右移一位 變為

3000

這樣不斷的減

直到 不夠減 為

1456 則 可知 商的 千位 為 4(因為 3000 是 3

的 1000倍)

這樣 3000 在右移一位 300

依此類推 得到 百位、十位,個位;

#include

#include

const

int maxn=300

;int

a[maxn],b[maxn],c[maxn];

char

str1[maxn],str2[maxn],re[maxn];

intlen1,len2;

int sub(int a,int b,int

len)

}for(i=0;i)

}while(a[len1-1]==0&&len1>=1)len1--;

return1;

}int

main()

int l=len1;

int dis=len1-len2;

for(i=0;i)

a[i]=str1[len1-1-i]-'0'

;

for(i=0;i)

b[i+dis]=str2[len2-1-i]-'0'

; i=0

;

while(i<=dis)

else i++;

}for(i=l;i>=0;i--)

if(i<0)puts("0"

);

else

}}/*

求實數的 n次方

題解:去掉小數點 ,作為 整數相乘

注意的地方那個就是,去掉小數點後,如 0.01 去掉後 變為 了001 乘積 為 1 所以我麼要注意

小數點所在的位置 ,和 積的位數進行比較 要麼新增 0,要呢不新增

還有就是

10.000  的平方輸出應為 100 沒有小數點

*/

view code

#include#define maxn 3000#include

#include

using

namespace

std;

intlen1,len2;

inta[maxn],b[maxn],c[maxn];

char

str[maxn];

void mul(int a,int

b) }

for(i=0;i)

}for(i=len1+len2;i>=0;i--)

if(i==-1)len2=0

;

else len2=i+1

;

for(i=0;i)

}int

main()

}if(d==0)

len1=0

;

for(i=0;i)

b[0]=1

; len2=1

;

int l=d;

while(l--)

if(f==0

)

}else

}r=len2-1

;

for(i=len2-1;i>=0;i--)

}for(i=r;i>=l;i--)printf("%c"

,str2[i]);

}else

l=0;

for(i=0;i<=len2;i++)

}if(l==num)l++;

r=len2;

for(i=len2;i>=0;i--)

}for(i=r;i>=l;i--)printf("%c"

,str2[i]);}}

printf("\n

");}

}

大整數問題

題目描述 有乙個k 1 k 80 位的十進位制正整數n,設計乙個程式,找到滿足條件 p3 p2 3p n的p的最大值。測試用例 輸入 1000000000000001000000000000003000000000000001 輸出 100000000000000 複製 include includ...

大整數相乘問題

先把好的部落格貼上 明天再說。include include includeusing namespace std string型別轉換成int型別 long string to num string str 整形數轉換為string型別 string num to string int intva...

大整數約數問題

來自kuangbin的acm模板 大整數約數和 poj 1845 sumdiv 求a b的所有約數之和 9901 大整數的約數和 三個問題 1.約數和結論 對於乙個大整數n,他的因數分解式為 a1 x1 a2 x2 a3 x3 那麼約數和 sum 1 a1 a1 2 a1 x1 1 a2 a2 2 ...