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 |
终于过了,代码贴出来请各位多多指教贴个代码,大家帮忙评价一下,各方面,批的越狠越好,小女子在此谢过各位大侠了! #include<iostream> #include <string> #include <vector> using namespace::std; int n; vector<int> r_int; int dot; string power() { int i,j,k; //in this case, r=0 for(i=0;i<5;i++) { if(r_int[i]!=0) break; } if(i==5) { string str_zero; str_zero = '0'; return str_zero; } vector<int> answer(n*5); answer[0]=1; for(i=0;i<n;i++) { vector<int> tmp(answer); if(n==1) { for(vector<int>::size_type ix=0,ll=0;ix!=answer.size();++ix,++ll) answer[ix] = r_int[ll]; } else { for(vector<int>::size_type ix=0;ix!=answer.size();++ix) answer[ix] = 0; for(j=0; j<5*(n-1); ++j) { if(tmp[j]!=0) { for(k=0; k<5; ++k) answer[j+k]+=tmp[j]*r_int[k]; } } for(j=1; j<n*5; ++j) { answer[j]+=answer[j-1]/10; answer[j-1]%=10; } } } string str; str.clear(); for(i=0; i<n*5; ++i) str=(char)(answer[i]+'0')+str; str.insert(n*5-dot*n, 1, '.'); while(str[0]=='0') str.erase(str.begin()); while(str[str.size()-1]=='0') str.erase(str.end()-1); if(str[str.size()-1]=='.') str.erase(str.end()-1); return str; } int main() { int i; char r[7];//easier to cin string ans; while(cin>>r>>n) { if(n<=0 || n>25) return 0; for(i=0; i<6; ++i) { if(r[i]=='.') { dot=6-i-1; break; } } if(i==6) dot = 0; r_int.clear(); for(i=5; i>=0; --i) { if(r[i]!='.') r_int.push_back(r[i]-'0'); } ans = power(); for(i=0;i<ans.size();++i) cout<<ans[i]; cout<<endl; } return 1; } Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator