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

Re:帮忙看看我怎么错的吧,各位。我高精度写得没问题啊,样例也过了

Posted by anonym11 at 2004-12-15 13:38:43 on Problem 1220
In Reply To:帮忙看看我怎么错的吧,各位。我高精度写得没问题啊,样例也过了 Posted by:anonym11 at 2004-12-15 13:36:55
> #include<iostream>
> #include<cstring>
> using namespace std ;
> #define unit 1000
> typedef struct Number {
> 	int d[1000] ;
> 	int l ;
> }Number ;
> 
> void add ( Number &a , int n )
> {
> 	a.d[0] += n;
> 	int i ,c = a.d[0] / unit  ;
> 	a.d[0] %= unit;
> 	for ( i = 1 ;c || i < a.l  ;i ++ )
> 	{
> 		a.d[i] += c ;
> 		c = a.d[i] / unit ;
> 		a.d[i] %= unit ;
> 	}
> 	a.l = i ;
> 	while ( a.l > 0 && a.d[a.l-1] == 0 )
> 		a.l -- ;
> }
> 
> int div ( Number &a, int n )
> {
> 	int i ,c = 0;
> 	for ( i = a.l - 1;i >= 0; i -- )
> 	{
> 		a.d[i] += c * unit ;
> 		c = a.d[i] % n ;
> 		a.d[i] /= n ;
> 	}
> 	while ( a.l > 1 && a.d[a.l-1] == 0 )
> 		a.l -- ;
> 	return c;
> }
> 
> void mul ( Number &a, int n )
> {
> 	int i ,c = 0;
> 	for ( i = 0 ;i < a.l || c > 0 ;i ++ )
> 	{
> 		a.d[i] *= n ;
> 		a.d[i] += c ;
> 		c = a.d[i] / unit ;
> 		a.d[i] %= unit ;
> 	}
> 	a.l = i ;
> }
> 
> int main ()
> {
> 	Number a;
> 	int b1, b2, len, i, t;
> 	char in[unit], out[unit];
> 	freopen ( "d:\\in.txt","r",stdin );
> 	cin >> t;
> 	while ( t -- ) {
> 		cin >> b1 >> b2 >> in;
> 		cout << b1 << ' ' << in << endl << b2 << ' ';
> 		memset ( a.d, 0, sizeof ( a.d ) );
> 		a.l = 1;
> 		for ( len = 0; in[len] ; len ++ )
> 			if ( in[len] <= '9' )
> 				in[len] -= '0';
> 			else
> 				if ( in[len] >= 'a')
> 					in[len] -= 'a' - 36;
> 				else
> 					in[len] -= 'A' - 10;
> 				for ( i = 0 ; i < len; i ++ )
> 				{
> 					mul ( a, b1 );
> 					add ( a, (int)in[i] );
> 				}
> 				len = 0;
> 				while ( a.d[0] || a.l - 1 )
> 					out[len++] = div ( a, b2 ) ;
> 				len --;
> 				while ( len >= 0 ) {
> 					if ( out[len] < 10 )
> 						cout << (int)out[len];
> 					else
> 						if ( out[len] < 36 )
> 							cout << (char) ( out[len] + 'A' - 10 ) ;
> 						else
> 							cout << (char) ( out[len] + 'a' - 36 ) ;
> 						len --;
> 				}
> 				cout << endl << 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