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

晕了,求帮助1001

Posted by fyzzy1943 at 2011-10-22 09:12:39
为啥会wa呢


#include<iostream>
using namespace std;
#include<string>

#define N 6
#define LEN 200

int in1[LEN],rein[LEN],reintmp[LEN];
char ch1[LEN];

int main()
{
	int i,j,k=0;	//k记录小数点位数
	int fac,m;	//fac阶乘
	int count=0,c=0;	//记录条数

	string input;
	while(cin>>input>>fac)
	{
		int isize=input.size();

		for(c=0;c<isize;c++)
		{
			ch1[c]=input[c];
		}
		ch1[isize]='\0';

	memset(in1,0,sizeof(in1));
	memset(rein,0,sizeof(rein));

	int len1=strlen(ch1);
	for(i=len1-1;i>=0;i--)
	{
		if(ch1[i]=='0')
		{
			len1--;
		}
		else
			break;
	}
	j=0;
	for(i=len1-1;i>=0;i--)
	{
		if(ch1[i]>='0' && ch1[i]<='9')
		{
			in1[j++]=ch1[i]-'0';
		}
		else
		{
			k=j;
		}

	}

	k*=fac;	//得到结果的小数点位置


	for(m=1;m<fac;m++)	//计算阶乘
	{
		if(m==1)
		{
			for(i=0;i<len1;i++)
			{
				for(j=0;j<len1;j++)
				{
					rein[i+j]+=in1[j]*in1[i];
				}
			}
	
	//移位计算,不处理进位问题

			for(i=0;i<len1+len1;i++)	//这段程序有溢出嫌疑,处理进位问题。
			{
				if(rein[i]>=10)
				{
					rein[i+1]+=rein[i]/10;
					rein[i]=rein[i]%10;
				}
			}
		}
		else
		{
			
			for(i=0;i<LEN;i++)
				reintmp[i]=rein[i];


			memset(rein,0,sizeof(rein));
			for(i=0;i<len1;i++)
			{
				for(j=0;j<len1*m;j++)
				{
					rein[i+j]+=reintmp[j]*in1[i];
				}
			}

			for(i=0;i<len1+len1*m;i++)	//这段程序有溢出嫌疑,处理进位问题。
			{
				if(rein[i]>=10)
				{
					rein[i+1]+=rein[i]/10;
					rein[i]=rein[i]%10;
				}
			}
		}


//处理进位
	}

	bool start=false;
	for(i=len1+len1*m;i>=0;i--)
	{
		
		if(start)
		{
			
			cout<<rein[i];
			if(i==k && k!=0)
				cout<<'.';
		}
		else if(rein[i])
		{
			cout<<rein[i];
			start=true;
			if(i==k && k!=0)
				cout<<'.';
		}
		else if(i==k && start==false && k!=0)
		{
			cout<<'0'<<'.';
			start=true;
		}
		
	}
	if(!start)
		cout<<'0'<<endl;
	else
		cout<<endl;


//输出
	}
	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