Follows 10106.c (Total 72 lines):

/* @JUDGE_ID:4461XX 10106 C */
/* A */
#include<stdio.h>
#include<string.h>
#include<math.h>

long arr[2][65] , ans[130] ;
char str[260] ;

void initial( void )
{
	int i ;

	for( i=0 ; i<65 ; i++ )
		arr[0][i] = arr[1][i] = 0 ;
	for( i=0 ; i<130 ; i++ ) ans[i] = 0 ;
}
int input( int i )
{
	int j , k , tail ;
	long num ;

	for( tail=0 , j=strlen( str )-1 ; j>=0 ; j-=4 ){
		for( num=k=0 ; k<4&&j-k>=0 ; k++ )
			num += ( str[j-k]-'0' )*(long)pow( 10 , k ) ;
		arr[i][tail] = num ;
		tail++ ;
	}	

	return tail ;
}
void multiply( int tail1 , int tail2 )
{
	int i , j ;

	for( i=0 ; i<tail1 ; i++ )
		for( j=0 ; j<tail2 ; j++ ){
			ans[i+j] += arr[0][i]*arr[1][j] ;
			if( ans[i+j]>=10000 ){
				ans[i+j+1] += ans[i+j]/10000 ;
				ans[i+j] %= 10000 ;
			}
		}
}
void print( void )
{
	int i ;
	
	for( i=129 ; i>=0 ; i-- ) if( ans[i] ) break ;
	printf( "%ld" , ans[i] ) ;
	for( i-- ; i>=0 ; i-- )
		printf( "%04ld" , ans[i] ) ;

	putchar( '\n' ) ;
}
int main( void )
{
	int tail1 , tail2 ;

	while( gets( str ) ){
		initial() ;

		tail1 = input( 0 ) ;
		gets( str ) ;
		tail2 = input( 1 ) ;

		multiply( tail1 , tail2 ) ;
		print() ;
	}

	return 0 ;
}

Back to statistics
Ya-Lin Huang (C)
huangyl@gmail.com