當數的位數非常大而常規的資料型別不足以儲存的時候,可以考慮使用大數。即用乙個長的陣列來儲存相應的位數,如int a[100],a的每一位儲存一位數字或幾位數字,根據常規的加減乘除運算對陣列進行操作。使用string型別對陣列進行操作,雖然比用整型簡便,但可 能增加了執行時間。pku1001:exponentiation 就用到了大數的乘法
如下是乙個使用string型別進行大數加減乘除的例子:
#include
#include
#include
#include
using namespace std;
bool comp(string num1,string num2)
else return false;
}string _plus(string num1,string num2)
result=result.substr(0,i+1);
reverse(result.begin(),result.end());
if(result.length()==0)result="0";
return result;
}string _minus(string num1,string num2)
reverse(num1.begin(),num1.end());
reverse(num2.begin(),num2.end());
string result="";
int i;
for(i=0;i=0;i--)
result=result.substr(0,i+1);
reverse(result.begin(),result.end());
if(result.length()==0)result="0";
return result;
}string _mult(string num1,string num2)
if(result=="")result="0";
return result;
}string _divid(string num1,string num2)
string result="",r1;
int i,j,k;
int length1=num1.length(),length2=num2.length(),pos;
r1=num1.substr(0,length2);
pos=length2-1;
while(pos>num1>>num2)
return 0;
}
大數加減乘除
include include include include includeusing namespace std compare比較函式 相等返回0,大於返回1,小於返回 1 int compare string str1,string str2 if cf 0 str char cf 0 st...
大數加減乘除
對於大數的加減乘除都要先把輸入的大數字串轉成倒序的陣列,再進行運算。字串的處理 scanf s s a1,b1 len 0 for int i strlen a1 1 i 0 i len 0 for int i strlen b1 1 i 0 i len max strlen a1 strlen b...
大數的加減乘除
最基本的乙個運算,可以用陣列或指標做 一.加法 1.自己的 真是一點都不簡潔,水平有限啊!include include int max int len1,int len2 int main for int i 0 i len1 len2 i s2 i 0 if len1 len2 for int ...