高精度除法:(利用了 減法)原理 :
例如 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 ...