首页 > 其他 > 详细

zoj 1095 - Humble Numbers

时间:2014-09-21 23:05:12      阅读:549      评论:0      收藏:0      [点我收藏+]

题目:找到用2,3,5,7为数的因第n个数字。

分析:dp,数据结构。类似于合并果子的队列维护,用4根指针分别指向队列,用当前的数乘以对应数字即可。

说明:(2011-09-19 01:42)

#include <iostream>

using namespace std;

int F[ 5845 ];
int n[ 4 ] = {2,3,5,7};
int p[ 4 ];

int main()
{
    F[ 1 ] = 1;
    for ( int i = 0 ; i < 4 ; ++ i ) p[ i ] = 1;
    int Count = 1;
    while ( Count <= 5842 ) {
        int min = F[ p[ 0 ] ]*n[ 0 ];
        int spa = 0;
        for ( int i = 1 ; i < 4 ; ++ i )
            if ( min > F[ p[ i ] ]*n[ i ] ) {
                min = F[ p[ i ] ]*n[ i ];
                spa = i;
            }
        if ( min > F[ Count ] )
            F[ ++ Count ] = min;
        ++ p[ spa ];
    }
    int N;
    while ( cin >> N && N ) {
        cout << "The " << N;
        if ( N%10 == 1 && N%100 != 11 )
            cout << "st";
        else if ( N%10 == 2 && N%100 != 12 )
            cout << "nd";
        else if ( N%10 == 3 && N%100 != 13 )
            cout << "rd";
        else
            cout << "th";
        cout << " humble number is " << F[ N ] << "." << endl;
    }    
    return 0;
}

zoj 1095 - Humble Numbers

原文:http://blog.csdn.net/mobius_strip/article/details/39457255

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!