Sources
- 1. 136
#include <stdio.h>
unsigned int num[3][1500];
unsigned int mul[3] = {2,3,5};
int main()
{
int c[3], w[3];
int i, j, p;
unsigned int min, n;
for( j=0 ; j<3 ; j++ )
c[j] = w[j] = 0;
// 현재 ugly number
n = 1;
// 2, 3, 5 중 이전에 선택한 배수
p = 0;
for( i=1 ; i<1500 ; i++ )
{
for( j=p ; j<3 ; j++ )
{
// overflow 방지
if( c[j] < 1500 && n < 0x7FFFFFFF / mul[j] )
num[j][ c[j]++ ] = n * mul[j];
}
min = 0x7FFFFFFF;
// 최소값 찾기
for( j=0 ; j<3 ; j++ )
{
if( num[j][ w[j] ] < min )
{
min = num[j][ w[j] ];
p = j;
}
- 2. }
n = min;
w[p]++;
}
printf( "The 1500'th ugly number is %d.n", n );
return 0;
}
272
#include <stdio.h>
int main()
{
int isopend;
int a;
isopend = 0;
while( (a = getchar()) != -1 )
{
if( a == '"' )
{
if( isopend )
{
isopend = 0;
printf( "''" );
}
else
{
isopend = 1;
printf( "``" );
}
}
else
putchar( a );
}
}
- 3. 591
#include <stdio.h>
int a[110];
int main()
{
int i, n, t;
int sum, mean;
t = 0;
while( scanf( "%d", &n ) == 1 )
{
if( !n )
break;
mean = 0;
for( i=0 ; i<n ; i++ )
{
scanf( "%d", &a[i] );
mean += a[i];
}
mean = mean / n;
sum = 0;
for( i=0 ; i<n ; i++)
{
if( a[i] > mean )
sum += a[i] - mean;
}
printf( "Set #%dnThe minimum number of moves is %d.nn", ++t, sum );
}
return 0;
}