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

晒晒我的代码 第1个ac的题目 高手给点意见哈

Posted by Scopi at 2010-06-05 16:26:42 on Problem 1001
#include<iostream>
using namespace std;
int mul(long int*,int,int);
int out(long int*,int);
int main()
{
	long int temp[32]={0};
	double R;int n;int xp;
	int r;
	while(cin>>R>>n)
	{
		xp=4;
		r=(int)(R*10000);
		while(r%10==0&&xp>0)
			{xp--;r/=10;}
		xp*=n;
		temp[0]=r%10000;
		temp[1]=r/10000;
		mul(temp,r,n);
		out(temp,xp);
		for(int i=0;i<32;i++)
			temp[i]=0;
	}
	return 0;
}

int mul(long int*temp,int multee,int n)
{
	for(int j=0;j<n-1;j++)
	{	
	for(int i=0;i<1.5*j+3.5;i++)
		temp[i]*=multee;
	for(int i=0;i<1.5*j+2.5;i++)
		temp[i+1]+=(temp[i]/10000);
	for(int i=0;i<1.5*j+3.5;i++)
		temp[i]%=10000;
	}
	return 0;
}

int out(long int*temp,int xp)
{	int i=xp/4;int j=31;
	int yu=xp%4;
	int last=0;
	cout.fill('0');
	while(temp[j]==0&&j>i)			
		j--;
	while(temp[last]==0&&last<i)	
		last++;
	if(j==i)
	{	
		if(yu==0)if(temp[j])cout<<temp[j];
		if(yu==1)if(temp[j]/10)cout<<temp[j]/10;
		if(yu==2)if(temp[j]/100)cout<<temp[j]/100;
		if(yu==3)if(temp[j]/1000)cout<<temp[j]/1000;
	}
	else
	{
		cout<<temp[j];
		for(j--;j>i;j--)
		{cout.width(4);cout<<temp[j];}
		if(yu==0){cout.width(4);cout<<temp[j];}
		if(yu==1){cout.width(3);cout<<temp[j]/10;}
		if(yu==2){cout.width(2);cout<<temp[j]/100;}
		if(yu==3)cout<<temp[j]/1000;
	}
	if(last==i)
	{
		if(yu==3)
			if(temp[j]%1000)
			{
				cout<<'.';cout<<temp[j]%1000/100;
				if(temp[j]%100)
					{
					cout<<temp[j]%100/10;
					if(temp[j]%10)cout<<temp[j]%10;
					}
			}

		if(yu==2)
			if(temp[j]%100)
			{
			cout<<'.';cout<<(temp[j]%100)/10;
			if(temp[j]%10)cout<<temp[j]%10;
			}
		if(yu==1)
			if(temp[j]%10)
			{cout<<'.';cout<<temp[j]%10;}
	}
	else
	{
		cout<<'.';
		if(yu==1)cout<<temp[j]%10;
		if(yu==2){cout.width(2);cout<<temp[j]%100;}
		if(yu==3){cout.width(3);cout<<temp[j]%1000;}
		for(j=i-1;j>last;j--)
		{cout.width(4);cout<<temp[j];}
		if(temp[last]%10==0)
			if(temp[last]%100==0)
				if(temp[last]%1000==0)
					cout<<temp[last]%1000;
				else {cout.width(2);cout<<temp[last]%100;}
			else {cout.width(3);cout<<temp[last]%10;}
		else {cout.width(4);cout<<temp[last];}
	}
		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