POJ 1001 Exponentiation
2013-09-30 00:01
357 查看
这道题主要是要对数据进行大数据运算算。
大数据进行乘法运算的时候,假设为a[MAX,b[MAX]两个数据相乘,那么所得的结果可以用如下的公式表示:
c[i+j] = a[i]*b[j];
c[i+j+1] += c[i+j]/10;
c[i+j] = c[i+j]%10;
这道题目后面比较麻烦的一点是对数据格式化输出,特别要注意的几个数据是9.0 0.0 其他的感觉还好。
花了一下午写的,好久没有做题目了,脑袋秀逗了。代码很奇怪,编译之后,有时候能运行,有时候会出现死掉的情况,但是逻辑并没有什么问题。
大数据进行乘法运算的时候,假设为a[MAX,b[MAX]两个数据相乘,那么所得的结果可以用如下的公式表示:
c[i+j] = a[i]*b[j];
c[i+j+1] += c[i+j]/10;
c[i+j] = c[i+j]%10;
这道题目后面比较麻烦的一点是对数据格式化输出,特别要注意的几个数据是9.0 0.0 其他的感觉还好。
#include <iostream> #include <cstdio> #include <string> #include <cstring> #include <cstdlib> using namespace std; void mypow(string r,int n);void powi(int *a,int n1,int n2,int pw); int main () { string r ; int n = 0; int a[3]= {1,0,1}; while ((cin >> r >> n)) { mypow(r,n); } } void powi(int *a,int n1,int n2,int pw) { int bgsz = n2*(n1+1); int *c = new int[bgsz]; int *b = new int[bgsz]; for (int i =n2*(n1+1); i >=0; i --) c[i] = 0; for (int i = n1; i >=0; i --) b[i]= a[i]; for (int k =0; k < n2-1; k ++) { for (int i =0; i < n1+k*n1; i ++) { for (int j =0; j < n1; j ++) { c[i+j] += b[i]*a[j]; c[i+j+1] += c[i+j]/10; c[i+j] = c[i+j]%10; } } for (int i =n2*(n1+1); i >=0; i --) { b[i] = c[i],c[i] =0; } } int flag = 0; int fstart = 0; for (int i =0; i < bgsz-1; i ++) { if (b[i] >0 && fstart <0) fstart = i; if (b[i]>0) flag = i; } if (pw<= flag) for (int i = flag; i >= pw; i--) cout << b[i]; else{} if(pw > fstart) { cout << '.'; for (int i = pw-1; i >= fstart; i --) { cout << b[i] ; } } else { if (pw+fstart) for (int i = pw; i>=0;i --) cout << b[i] ; } cout <<endl; } void mypow (string r,int n) { string::reverse_iterator it = r.rbegin(); int mout = 0; while (it != r.rend()&&*it == '0' ) { mout ++; it ++; } r.erase(r.size()-mout,r.size()); int pt = r.find('.'); int pn = 0; if(pt >0) pn = (r.size()-pt-1)*n; if (pt >=0) { r.erase(pt,1); } int *a = new int[r.size()]; int sz = r.size(); for (int i =0; i < sz; i ++) { a[i] = r[sz-i-1]-48; } powi(a,sz,n,pn); delete a; }
花了一下午写的,好久没有做题目了,脑袋秀逗了。代码很奇怪,编译之后,有时候能运行,有时候会出现死掉的情况,但是逻辑并没有什么问题。
相关文章推荐
- poj 1001 Exponentiation
- POJ 1001 Exponentiation
- POJ1001 Exponentiation解题报告
- POJ 1001 Exponentiation
- hdoj1063&&poj1001 Exponentiation(大数据的处理,浮点数的幂高精确度表示)
- poj1001 Exponentiation
- poj 1001 Exponentiation
- POJ练习——1001 Exponentiation
- poj 1001 Exponentiation(高精度运算)
- POJ 1001 Exponentiation (高精度/大数乘法)
- POJ 1001 Exponentiation
- POJ 1001 Exponentiation
- POJ_1001_Exponentiation_高精
- POJ 1001: Exponentiation
- poj 1001 Exponentiation 高精度乘法
- POJ - 1001 Exponentiation(浮点数高精度乘法)
- POJ 1001 Exponentiation
- POJ 1001 Exponentiation 高精度
- poj 1001 Exponentiation(高精度运算)
- POJ 1001 & UVa 748 - Exponentiation in JAVA