zoj1095 Humble Numbers(DP)
2011-08-17 13:24
387 查看
/*
简单DP:每次将求得的值分别乘以2,3,4,7,然后利用插入排序插入到数据序列中
保证数据的递增序,最终到达结束状态。
*/
View Code
简单DP:每次将求得的值分别乘以2,3,4,7,然后利用插入排序插入到数据序列中
保证数据的递增序,最终到达结束状态。
*/
View Code
#include <iostream> #include <cstdlib> #include <stdio.h> using namespace std; long long data[ 6000 ] = {0,1,2,3,5,7}; bool bs( int l, int h, long long key ) { while ( l <= h ) { int mid = (l+h)/2; if ( data[ mid ] == key ) return true; else if ( data[ mid ] > key ) h = mid-1; else l = mid+1; } return false; } int main() { int save = 6,move = 2; while ( move < save && save < 6000 ) { for ( int i = 2 ; i <= move ; ++ i ) { data[ save ] = data[ move ]*data[ i ]; if ( data[ save ] <= 2000000000 && !bs( 1, save-1, data[ save ] ) ) { int now = save ++; while ( data[ now ] < data[ now-1 ] ) { swap( data[ now ], data[ now-1 ] ); -- now; } } } ++ move; } int n; while ( scanf("%d",&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 " << data[ n ] << "." << endl; } return 0; }
相关文章推荐
- zoj 1095 Humble Numbers(丑数+dp)
- zoj 1095 || hdu 1058 Humble Numbers( DP || 乱搞)
- ZOJ 1095 Humble Numbers
- ZOJ--1095:Humble Numbers
- zoj 1095 Humble Numbers
- zoj1095 Humble Numbers
- zoj 1095 - Humble Numbers
- ZOJ 1095 Humble Numbers (构造)
- ZOJ 1095 Humble Numbers
- zoj 1095 Humble Numbers
- ZOJ 1095 Humble Numbers
- hdu 1058 Humble Numbers (DP)
- HDOJ1058 Humble Numbers DP简单题
- hdu 1058 Humble Numbers(dp)
- HDU Problem - 1058 Humble Numbers 【dp】
- HDOJ1058(Humble Numbers)dp
- USACO Humble Numbers DP?
- USACO / Humble Numbers(较难DP)
- HDU 1058 Humble Numbers(DP,数)
- HDU 1058Humble Numbers(dp)