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

吐血啦,还是presensation error,受不了了,不过还是谢谢

Posted by 00448175 at 2005-04-16 23:48:21 on Problem 1405
In Reply To:"%.?I64d",问号换成总位数 Posted by:frkstyc at 2005-04-16 23:31:14
#include<iostream.h>
#include<string.h>
#include<stdio.h>
class HugeInt{
public:
	HugeInt();
	HugeInt(const char *);
	HugeInt operator+(HugeInt &);
	HugeInt operator+(int);
	HugeInt operator*(HugeInt &);
	HugeInt operator-(int);
	void print();
	

private:
	__int64 integer[3500];
	int pointPosition;
	
};
HugeInt::HugeInt(){
	for(int i=0;i<3500;i++)
		integer[i]=0;
}

                                                                                                                 

HugeInt::HugeInt(const char *string){
	int i;
	for(i=0;i<3500;i++)
		integer[i]=0;
	integer[3499]=2;
} 
//+
HugeInt HugeInt::operator +(HugeInt &op2){
	HugeInt temp;
	int carry=0;
	for(int i=3499;i>=0;i--){
		temp.integer[i]=integer[i]+op2.integer[i]+carry;
		if(temp.integer[i]>100000000){
			temp.integer[i]-=100000000;
			carry=1;
		}
		else
			carry=0;
	}
	return temp;
}
HugeInt HugeInt::operator -(int num){
	HugeInt temp=*this;
	int i=3499;
	while(temp.integer[i]==0){
		temp.integer[i]=99999999;
		i--;
	}
	temp.integer[i]--;
	return temp;
}
HugeInt HugeInt::operator +(int num){
	HugeInt temp=*this;
	int i=3499;
	while(temp.integer[i]==99999999){
		temp.integer[i]=0;
		i--;
	}
	temp.integer[i]++;
	return temp;
}		


//*
HugeInt HugeInt::operator*(HugeInt &op2){
	HugeInt sum;
	int i,j,k,h;
	__int64 carry=0;
	for(k=0;integer[k]==0;k++);
	for(h=0;op2.integer[h]==0;h++);
	
	for(i=3499;i>=k;i--){
		HugeInt temp;
		for(j=3499;;j--){
			temp.integer[i+j-3499]=op2.integer[j]*integer[i]+carry;
			carry=temp.integer[i+j-3499]/100000000;
			temp.integer[i+j-3499]%=100000000;
			if(j<=h&&carry==0)
				break;
		}
		sum=sum+temp;
	}
	return sum;
}


//<<
void HugeInt::print(){
	int i,j;
	for( i=0;integer[i]==0;i++);
	j=i;
	printf("%I64d",integer[j]);
	for(j++;j<3500;j++)
		printf("%.8I64d",integer[j]);
		
	
	cout<<endl;
}



			
			
				
			


void main(){
	int n;
	cin>>n;
	char w[1]={""};
	HugeInt q(w);
	q.print();
	for(int i=1;i<n;i++){
		q=(q-1)*q+1;
		q.print();
		
	}	
}



	

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