[Jobdu] 题目1214:丑数
生活随笔
收集整理的這篇文章主要介紹了
[Jobdu] 题目1214:丑数
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
題目描述: 輸入: 輸出: 樣例輸入: 3 樣例輸出: 3
把只包含因子2、3和5的數(shù)稱作丑數(shù)(Ugly Number)。例如6、8都是丑數(shù),但14不是,因為它包含因子7。
習(xí)慣上我們把1當(dāng)做是第一個丑數(shù)。求按從小到大的順序的第N個丑數(shù)。
輸入包括一個整數(shù)N(1<=N<=1500)。
可能有多組測試數(shù)據(jù),對于每組數(shù)據(jù),
輸出第N個丑數(shù)。
很有技巧的一道題,注意分別為2,3,5維護一個index!
1 #include <cstring> 2 #include <cstdio> 3 using namespace std; 4 5 int a[1501]; 6 7 int getMin(int a, int b, int c) 8 { 9 int tmp = a < b ? a : b; 10 return c < tmp ? c : tmp; 11 } 12 13 void init() 14 { 15 int idx = 1, idx2 = 1, idx3 = 1, idx5 = 1; 16 int val; 17 a[1] = 1; 18 while (idx < 1501) { 19 idx++; 20 val = getMin(a[idx2]*2, a[idx3]*3, a[idx5]*5); 21 if (val == a[idx2] *2) { 22 idx2++; 23 } 24 if (val == a[idx3] *3) { 25 idx3++; 26 } 27 if (val == a[idx5] *5) { 28 idx5++; 29 } 30 a[idx] = val; 31 } 32 } 33 34 int main() 35 { 36 int n; 37 init(); 38 while (scanf("%d", &n) != EOF) { 39 printf("%d\n", a[n]); 40 } 41 return 0; 42 } 43 44 /************************************************************** 45 Problem: 1214 46 User: hupo250 47 Language: C++ 48 Result: Accepted 49 Time:10 ms 50 Memory:1028 kb 51 ****************************************************************/?
總結(jié)
以上是生活随笔為你收集整理的[Jobdu] 题目1214:丑数的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Win32_16来看看标准菜单和右键菜单
- 下一篇: 计划任务管理 之 计划任务工具 cron