首页 > 代码库 > zoj 1095 - Humble Numbers
zoj 1095 - Humble Numbers
题目:找到用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
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。