POJ 1338 Ugly Numbers

来源:互联网 发布:telnet不通公网80端口 编辑:程序博客网 时间:2024/06/05 09:56

简单的模拟题。初始化时每次挑出2 3 5的倍数中较小的记录即可。以后有时间试试STL中的优先队列。

#include <iostream>using namespace std;const int MAX_POS = 1500;int myMin(int a, int b, int c) {    int min;    min = a < b ? a : b;    min = min < c ? min : c;    return min;}int main(){    int ugly[MAX_POS + 1];    ugly[1] = 1;    int p2, p3, p5;    p2 = p3 = p5 = 1;    for(int i = 2; i <= MAX_POS; i++) {        int value2 = ugly[p2] * 2;        int value3 = ugly[p3] * 3;        int value5 = ugly[p5] * 5;        ugly[i] = myMin(value2, value3, value5);        if(ugly[i] == value2)           p2++;        if(ugly[i] == value3)           p3++;        if(ugly[i] == value5)           p5++;    }    int n;    while(cin >> n, n != 0) {        cout << ugly[n] << endl;    }    return 0;}




0 0
原创粉丝点击