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 |
请教,WA(很清楚)#include<iostream> #include<string> using namespace std; string clear(string s) { if(s=="") s="0"; while(s.length()>0 && s[0]=='0') s.erase(0,1); if(s=="") s="0"; return s; } string subclear(string s) { if(s=="") s="0"; while(s.length()>0 && s[s.length()-1]=='0') s.erase(s.length()-1,1); if(s=="") s="0"; return s; } string addition(string s1,string s2) { int i; while(s1.length()<s2.length()) s1="0"+s1; while(s1.length()>s2.length()) s2="0"+s2; s1="0"+s1; s2="0"+s2; for(i=s1.length()-1;i>=0;i--) { s1[i]+=s2[i]-'0'; if(s1[i]>'9') { s1[i]-=10; s1[i-1]+=1; } } return clear(s1); } string multiply(string s1,string s2) { int i; char C; string Result; int str1=0,str2=0; string s11,s12; if(s1=="0" || s2=="0") return "0"; for(i=0;i<s1.length();i++) { if(s1[i]=='.') { str1=s1.length()-1-i; s1.erase(i,1); break; } if(i==s1.length()-1 && s1[s1.length()-1]!='.') str1=0; } for(i=0;i<s2.length();i++) { if(s2[i]=='.') { str2=s2.length()-1-i; s2.erase(i,1); break; } if(i==s2.length()-1 && s2[s2.length()-1]!='.') str2=0; } Result="0"; for(i=s2.length()-1;i>=0;i--) { for(C='1';C<=s2[i];C++) Result=addition(Result,s1); s1+="0"; } if(str1+str2==0) return clear(Result); else if(str1+str2<Result.length()) Result.insert(Result.length()-str1-str2,"."); else if(str1+str2==Result.length()) { Result="0."+Result; } else { while(str1+str2>Result.length()) Result="0"+Result; Result="0."+Result; } for(i=0;i<Result.length();i++) { if(Result[i]=='.') { s11=Result.substr(0,i); s12=Result.substr(i+1); break; } } s11=clear(s11); s12=subclear(s12); if(s12=="0") return s11; else if(s11=="0") return "."+s12; else return s11+"."+s12; } string mul(string s,int n) { int i=0; if(n==0) return "1"; if(n==1) return s; else if(n==2) return multiply(s,s); else return n%2==0?multiply(mul(s,n/2),mul(s,n/2)):multiply(mul(s,(n+1)/2),mul(s,(n-1)/2)); } int main() { string str; int s; while(cin>>str>>s) { str=mul(str,s); cout<<str<<endl; } return 0; } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator