//1_5_8: Ugly Numbers 丑陋数 POJ1338
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
int min(int a,int b,int c)
{
int temp = a < b ? a : b;
return temp < c ? temp : c;
}
int main()
{
int i,l,m,n,cnt2,cnt3,cnt5,a[1500 + 10];
a[1] = cnt2 = cnt3 = cnt5 = 1;
for(i = 2;i <= 1500;i ++)
{
l = a[cnt2] * 2;
m = a[cnt3] * 3;
n = a[cnt5] * 5;
a[i] = min(l,m,n);
if(a[i] == l) cnt2++;
if(a[i] == m) cnt3++;
if(a[i] == n) cnt5++;
}
while(scanf("%d",&i),i != 0) printf("%d\n",a[i]);
return 0;
}
/*测试结果:通过POJ1338检测
1
1
2
2
9
10
0
请按任意键继续. . .
*/
POJ1338 Ugly Numbers
最新推荐文章于 2016-10-04 16:24:07 发布