标签:
Time Limit: 500MS | Memory Limit: 10000K | |
Total Submissions: 158025 | Accepted: 38470 |
Description
Input
Output
Sample Input
95.123 12 0.4321 20 5.1234 15 6.7592 9 98.999 10 1.0100 12
Sample Output
548815620517731830194541.899025343415715973535967221869852721 .00000005148554641076956121994511276767154838481760200726351203835429763013462401 43992025569.928573701266488041146654993318703707511666295476720493953024 29448126.764121021618164430206909037173276672 90429072743629540498.107596019456651774561044010001 1.126825030131969720661201
#include <iostream> #include <string.h> #include <algorithm> using namespace std; const int MAXN=1005; struct BigInt{ int e[MAXN],len; int pis;//小数点位数 BigInt() { memset(e,0,sizeof(e)); len=0; pis=0; } void set(char s[]) { int pp; for(int i=0;s[i];i++) { if(s[i]==‘.‘) { pp=i; break; } } int l=strlen(s)-1; pis=l-pp; for(int i=l;i>=0;i--) { if(s[i]==‘.‘)continue; e[len++]=s[i]-‘0‘; } while(e[len-1]==0&&len>1) len--; } BigInt operator*(const BigInt& b) { BigInt res; for(int i=0;i<len;i++) { int up=0; for(int j=0;j<b.len;j++) { int z=(e[i]*b.e[j]+up+res.e[i+j]); res.e[i+j]=z%10; up=z/10; } if(up!=0) res.e[i+b.len]=up; } res.pis=pis+b.pis; res.len=len+b.len; while(res.e[res.len-1]==0&&res.len>1) res.len--; return res; } void print() { int limit=0; while(e[limit]==0&&limit<pis) limit++;//去后导0 if(pis>=len) { cout<<"."; int i; for(int i=pis;i>len;i--) { cout<<0; } for(int i=len-1;i>limit;i--) { cout<<e[i]; } cout<<e[limit]<<endl; } else { for(int i=len-1;i>=pis;i--) { cout<<e[i]; } if(limit<pis) { cout<<"."; for(int i=pis-1;i>limit;i--) { cout<<e[i]; } cout<<e[limit]<<endl; } else cout<<endl; } } void print2() { for(int i=0;i<len-1;i++) { cout<<e[i]; } cout<<e[len-1]<<endl; } }; char buf[MAXN]="1.0"; char a[MAXN],b[MAXN]; int n; int main() { while(cin>>a>>n) { BigInt res,x; res.set(buf); x.set(a); for(int i=0;i<n;i++) { res=res*x; } res.print(); } return 0; }
标签:
原文地址:http://www.cnblogs.com/program-ccc/p/5650682.html