Online JudgeProblem SetAuthorsOnline ContestsUser
Web Board
Home Page
F.A.Qs
Statistical Charts
Problems
Submit Problem
Online Status
Prob.ID:
Register
Update your info
Authors ranklist
Current Contest
Past Contests
Scheduled Contests
Award Contest
User ID:
Password:
  Register

测试数组全过 但就是WA

Posted by namewchwch at 2009-09-23 11:52:49 on Problem 1001
#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:
User ID:
Password:
Title:

Content:

Home Page   Go Back  To top


All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator