Follows 153.c (Total 37 lines):

/* @JUDGE_ID:4461XX 153 C */
/* A */
#include<stdio.h>
#include<string.h>
double count_step( int num )
{
	double ans , i ;
	for( ans=i=1.0 ; i<=num ; i++ ) ans *= i ;
	return ans ;
}
void main( void )
{
	char arr[31] ;
	int num[26] , i , j , k , time ;
	double count , p ;
	while( gets( arr ) ){
		if( !strcmp( "#" , arr ) ) break ;
		for( i=0 ; i<26 ; i++ ) num[i] = 0 ;
		for( i=0 ; arr[i] ; i++ ) num[arr[i]-'a']++ ;
		for( i=0 , count=0.0 ; i<strlen( arr )-1 ; num[arr[i]-'a']-- , i++ )
			for( j=arr[i]-'a'-1 ; j>=0 ; j-- )
				if( num[j] ){
					num[j]-- ;
					for( k=time=0 , p=1.0 ; k<26 ; k++ ){
						time += num[k] ;
						if( num[k] > 1 ) p *= count_step( num[k] ) ;
					}
					num[j]++ ;
					count += count_step( time ) / p ;
				}
		printf( "%10.0lf\n" , count+1 ) ;
	}
}





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