POJ 1001 Exponentiation
2011-12-30 15:48
411 查看
题目描述:
计算R的n次方。如果计算的结果有前缀0,输出时将前缀0去掉。如果是小数点右半部分有后缀0,输出时同样去掉后缀0。
思路:
用字符串存储待计算的数及计算的结果。
计算R的n次方。如果计算的结果有前缀0,输出时将前缀0去掉。如果是小数点右半部分有后缀0,输出时同样去掉后缀0。
思路:
用字符串存储待计算的数及计算的结果。
#include <iostream> #include <string> using namespace std; /* * 返回两个大数相乘的结果 */ string multiple(string a, string b) { string result = "0", str; int i, j, remain, tmp, m, n; for(i = a.length() - 2; i >= 0; i--) { remain = 0; str = ""; for(j = b.length() - 1; j >= 0; j--) { tmp = (a[i] & 0XF) * (b[j] & 0XF) + remain; remain = tmp / 10; str = (char)(tmp % 10 + '0') + str; } if(remain != 0) { str = (char)(remain + '0') + str; } tmp = 0; m = result.length() - (a.length() - i); n = str.length() - 1; remain = 0; while(m >= 0 && n >= 0) { tmp = (result[m] & 0XF) + (str & 0XF) + remain; remain = tmp / 10; result[m] = (char)(tmp % 10 + '0'); m--; n--; } while(m >= 0) { tmp = (result[m] & 0XF) + remain; remain = tmp / 10; result[m] = (char)(tmp % 10 + '0'); m--; } while(n >= 0) { tmp = (str & 0XF) + remain; remain = tmp / 10; result = (char)(tmp % 10 + '0') + result; n--; } if(remain != 0) { result = (char)(remain + '0') + result; } } return result; } int main() { int c, n, i, j, pos, num; string str, res; while(cin >> str >> n) { res = ""; pos = str.find_first_of("."); if(pos != string::npos) { str.erase(pos, 1); } num = str.length() - pos; if(n == 1) { res = str; } else { res = multiple(str, str); for(i = 2; i < n; i++) { res = multiple(res, str); } } if(pos == string::npos) { cout << res << endl; continue; } c = num * n; i = res.length() - 1; string s = ""; while(c > 0 && i >= 0) { s = res[i--] + s; c--; } s = "." + s; for(j = 0; j <= i; j++) { if(res[j] != '0') { s = res.substr(j, i - j + 1) + s; break; } } for(i = s.length() - 1; i >= 0; i--) { if(s[i] == '0') { s.erase(i, 1); } else { break; } } if(s[s.length() - 1] == '.') { s.erase(s.length() - 1, 1); } cout << s << endl; } return 0; }
相关文章推荐
- 【高精度】POJ1001-Exponentiation
- poj 1001 Exponentiation(高精度运算)
- POJ1001 Exponentiation
- poj 1001 Exponentiation
- 【poj1001】 Exponentiation
- POJ 1001 Exponentiation
- POJ1001 Exponentiation
- HDU 1063/POJ 1001-Exponentiation(大数类)
- POJ 1001 Exponentiation(高精度乘法)
- poj 1001 Exponentiation(高精度运算)
- poj 1001 Exponentiation(求高精度幂)
- POJ 1001 Exponentiation(大数幂Java实现)
- POJ 1001 Exponentiation
- poj 1001 Exponentiation
- [POJ][1001]Exponentiation
- 【POJ】1001 Exponentiation
- 高精度浮点数幂次方 POJ 1001 Exponentiation
- POJ 1001 Exponentiation(大数)
- poj 1001 uva 748 Exponentiation(高精度小数乘法)
- POJ 1001 Exponentiation