| ||||||||||
| 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>
#include<vector>
#include<algorithm>
#include<sstream>
using namespace std;
int main()
{
string str;int n; int carry=0;int remain;vector<int> result1;vector<int> a;int z=0;bool bl=true;
vector<int> *b=new vector<int>();;int k=0;int q=0;vector<int> *result2;
vector<int>::iterator it;vector<int>::iterator itt;vector<int>::iterator add;vector<int>::iterator add2;
while(cin>>str>>n)
{ b->clear();a.clear();k=0;q=0;z=0;carry=0;bl=true;
result1.clear();
for(int i=str.length()-1;i>=0;i--) //标准化数组 把小数位数放如k,或 10的位数放入z
{
if(str[i]=='.'){k=str.length()-1-i-z;z=0;continue;}
if(str[i]=='0'&&bl){z=z+1;continue;}
bl=false;
a.push_back((str[i]-'0'));b->push_back((str[i]-'0')); //a=b=R
}
k=n*k;z=z*n; //计算幂次后小数位数k 或10
for(int i=0;i<n-1;i++) //b=R乘以R n-1次
{
vector<int>*pp=new vector<int>();
result2=pp;
for(it=(a.begin());it!=(a.end());++it)
{
for(itt=b->begin();itt!=b->end();++itt)
{
if(q==0){result2->push_back(0);}
remain=((*it)*(*itt)+carry)%10;
carry=((*it)*(*itt)+carry)/10;
result1.push_back(remain);
}
if(carry){result1.push_back(carry);}
add2=result2->begin()+q;carry=0;
for(add=result1.begin();add!=result1.end();++add)
{
if(add2==(result2->end())){result2->push_back(0);add2=(result2->end()-1);}
remain=((*add)+(*add2)+carry)%10;
carry=((*add)+(*add2)+carry)/10;
(*add2)=remain;
add2+=1;
}
if(carry){result2->push_back(carry);}
q=q+1;carry=0;result1.clear();
}
delete b;
b=result2;
q=0;
}
int i=0; //输出
for(add=b->end();add!=b->begin();add--)
{
if(i==(b->size()-k))cout<<"."<<flush;
cout<<*(add-1)<<flush;
i=i+1;
}
while(z)
{
cout<<"0"<<flush;
z=z-1;
}
if(!z) cout<<"\n";
}
return 0;
}
那位高手 指点下啊
Followed by:
Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator