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

帮忙看看错在哪里?这么老通不过

Posted by hlm_87 at 2009-12-19 15:37:49 on Problem 1001
#include<iostream>
#include<string>

using namespace std;
const int array_length = 1024;
int main()
{

	string R;
	string dest;
	int n;
	cin >> R >> n;
	double  R_double = atof(R.c_str());
	if(n <= 0 || n > 25)return 0;
	if(R_double <= 0.0 || R_double >= 99.999)
	{
		return 0;
	}
	int *arrays = new int[array_length];
	int *current = new int[array_length];
	int *temp;
	int point_num;
	int temp_length;
	string::size_type pos = R.find('.');
	if(pos == string::npos)
	{
		point_num = 0;
		temp_length = R.size()- R.find_first_not_of('0');
		temp = new int[temp_length];
		int j = 0;
		for(int i = R.find_first_not_of('0'); i < R.size(); ++i)
		{
			temp[j] = R.at(i)- 48;
			j++;
		}
	}
	else
	{
		string delim(".0");
		if(R_double > 1) temp_length =R.size() - R.find_first_not_of(delim)-1;	
		else temp_length =R.size() - R.find_first_not_of(delim);	
		temp = new int[temp_length];
		point_num = (R.size()-1-(int)pos)*n;
		int j = 0;
		for(int i = R.find_first_not_of(delim); i < R.size(); ++i)
		{
			if(R.at(i) == '.')continue;
			temp[j] = R.at(i)- 48;
			j++;
		}
	}


	for(int i = 0; i < array_length; ++i)
	{
		arrays[i] = 0;
		current[i] = 0;
	}
	for(int i = array_length-1; i >= 0; --i)
	{
		static int k = temp_length -1;
		if(k < 0)break;
		current[i] = temp[k];
		k--;
	}
	int i_temp;
	int arr_temp;
	int arr_sub = array_length - 1;
	for(int i = 0; i < n-1; ++i)
	{
		for(int j = 0; j < temp_length; ++j)
		{
			arr_sub = array_length -1;
			for(int k = array_length -1; k >= 0; --k)
			{
				i_temp = temp[j]*current[k];
				arrays[arr_sub] += i_temp%10;
				arrays[arr_sub-1] += i_temp/10;
				if(arrays[arr_sub] > 9)
				{
					arr_temp = arrays[arr_sub]/10;
					arrays[arr_sub] = arrays[arr_sub]%10;
					arrays[arr_sub-1] += arr_temp;
				}
				arr_sub--;
			}
			for(int u = 0; u < array_length; u++)
			{
				if(arrays[u] == 0)continue;
				for(int y = u; y < array_length; y++)
				{
					arrays[y-1] = arrays[y];
				}
				arrays[array_length-1] = 0;
				break;
			}
		}
		for(int i = 0; i < array_length-1; ++i)
		{
			current[i+1] = arrays[i];
			arrays[i] = 0;
		}
		arrays[array_length-1] = 0;
	}
	
	for(int i = 0; i < array_length; ++i)
	{
		arrays[i] = current[i];
	}
	for(int i = 0; i < array_length; ++i)
	{
		dest.push_back(arrays[i] +48);
	}



	if(point_num != 0)
	{	
		dest.insert(dest.size()-point_num,".");
		while(!dest.empty())//删除后面的零
		{
			if(dest.at(dest.size()-1) != 48)break;
   			dest.erase(dest.size()-1,1);
		}
		string::size_type pos = dest.find('.');
		while(dest.at(0) != '.')
		{
			if(dest.at(0) == '0')dest.erase(0,1);
			else
			{
				break;
			}
		}
		//if(dest.at(0) == '.')dest.insert(0,"0");
		if(dest.at(dest.size()-1) == '.')dest.erase(dest.size() -1);
	}
	else
	{
		while(dest.size() > 1)
		{
			if(dest.at(0) != 48)break;
			dest.erase(0,1);
		}
	}

	//输出
	cout << dest << endl;

	delete [] temp;
	delete [] arrays;
	delete [] current;
	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