題目描述:對數值很大、精度很高的數進行高精度計算是一類十分常見的問題。比如,對國債進行計算就是屬於這類問題。
現在要你解決的問題是:對乙個實數r( 0.0 < r < 99.999 ),要求寫程式精確計算 r 的 n 次方(r
n),其中n 是整數並且 0 < n <= 25。
解題思路:很簡單的一道高精度題目。話不多說直接上**,過程被寫得複雜啦,有很大的改進空間。
#include #include using namespace std;
string multiple(string a, string b) //計算兩高精度數乘積
if(remain != 0)
int tmp = 0;
int m = result.length() - (a.length() - i);
int n = str.length() - 1;
remain = 0;
while(m >= 0 && n >= 0)
while(m >= 0)
while(n >= 0)
if(remain != 0)
}return result;
}int main()
int num = str.length() - pos;
if(n == 1) //計算str表示的數的n次冪
else
}if(pos == string::npos)
int c = num * n;
i = res.length() - 1;
string s = "";
while(c > 0 && i >= 0)
s = "." + s;
for(j = 0; j <= i; j++)
}for(i = s.length() - 1; i >= 0; i--)
else
}if(s[s.length() - 1] == '.')
cout << s << endl;
} return 0;
}
POJ 1001 求高精度冪 大數乘法系列
題目描述 對乙個實數r 0.0 r 99.999 要求寫程式精確計算 r 的 n 次方 rn 其中n 是整數並且 0 n 25。輸入資料中每行1 6列為r的值,n的值為8 9列。對於輸出答案,需要去除無用的前導0和後續0。整數的話不要輸出小數點。這是乙個高精度乘法的問題,只是比普通的大數乘法多了小數...
POJ 1001 高精度乘法
必須去掉前導0和後導0,乙個特殊資料是對000.00這樣的輸出0 include includeusing namespace std int main while n 2 如果小於2直接輸出 for int i 0 i dianwei i 從左往右去掉0 int lastindex 1 for i...
POJ 1001 高精度乘法
必須去掉前導0和後導0,乙個特殊資料是對000.00這樣的輸出0 include includeusing namespace std int main while n 2 如果小於2直接輸出 for int i 0 i dianwei i 從左往右去掉0 int lastindex 1 for i...