2614635 2011-08-04 10:07:51 Accepted 1095 C 0 160 ylwh!
#include <stdio.h>
int min(int x, int y)
{
return x>y?y:x;
}
int main()
{
int n, a[5843], p[4], b[4], c[] = {2, 3, 5, 7}, i, j;
a[1] = 1;
for(i=0; i<4; i++)
{
p[i] = 1;
b[i] = a[ p[i] ] * c[i];
}
for(i=2; i<5843; i++)
{
a[i] = min( min(b[0], b[1]), min(b[2], b[3]) );
for(j=0; j<4; j++)
if(b[j] == a[i])
{
p[j]++;
b[j] = a[ p[j] ] * c[j];
}
}
while(scanf("%d", &n), n)
{
if(n % 10 == 1 && n%100 != 11)
printf("The %dst humble number is %d.\n", n, a[n]);
else if(n % 10 == 2 && n%100 != 12)
printf("The %dnd humble number is %d.\n", n, a[n]);
else if(n % 10 == 3 && n%100 != 13)
printf("The %drd humble number is %d.\n", n, a[n]);
else
printf("The %dth humble number is %d.\n", n, a[n]);
}
return 0;
}
看了别人的代码才做出来的,感觉自己分析能力还是不够。。。