Online Judge | Problem Set | Authors | Online Contests | User | ||||||
---|---|---|---|---|---|---|---|---|---|---|
Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest |
AC了!!!!#include <iostream> #include <stdio.h> #include <string.h> using namespace std; string mul(string s1,string s2); string pow(string s,long n); int main() { char str[101]; int i,j,n,len,p,lens,flag; string s1,s; while(scanf("%s%d",str,&n)!=EOF) { flag=0,len=strlen(str); for(i=0;i<len-1;i++) if(str[i]=='.') { p=i;flag=1;break; } if(!flag) { s1=str,s=pow(s1,n); strcpy(str,s.c_str()); printf("%s\n",str); continue; } for(i=len-1;i>=0;i--) { if(str[i]=='0') continue; else break; } if(str[i]=='.') { str[i]='\0';s1=str,s=pow(s1,n); strcpy(str,s.c_str()); printf("%s\n",str); continue; } else str[i+1]='\0'; len=strlen(str); for(i=0;i<len-1;i++) if(str[i]=='.') { p=i;break; } for(j=i;j<len-1;j++) str[j]=str[j+1]; str[j]='\0'; s1=str,s=pow(s1,n); p=len-(p+1),p*=n,lens=p-s.length(); if(p>s.length()) { for(i=0;i<lens;i++) s.insert(0,"0"); s.insert(0,"."); } else s.insert(s.length()-p,"."); strcpy(str,s.c_str()); printf("%s\n",str); } return 0; } string mul(string s1,string s2) { string s; int i,j,a,b,c,r,k=0,t=0,st; i=s1.length(),j=s2.length(); k=i+j+1;s.clear(); for(st=0;st<k;st++) s.append("0"); for(j=s2.length()-1;j>=0;j--) { b=s2[j]-'0'; t++,st=t; for(i=s1.length()-1;i>=0;i--) { a=s1[i]-'0',c=a*b,r=0; r+=c/10,c%=10; s[k-st]+=c;c=s[k-st]-'0'; if(c>9) { s[k-st]=c%10+'0';r+=c/10; } s[k-st-1]+=r; st++; } } for(i=0;i<s.length()-1;i++) if(s[i]!='0') break; s.erase(0,i); return s; } string pow(string s,long n) { string ans="1"; if(!n) return ans; while(n>1) { if(n%2) {ans=mul(ans,s);n--;} else { s=mul(s,s); n/=2; } } ans=mul(ans,s); return ans; } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator