丑数
试题描述
丑数就是这个数的质因子只有2,3,5,7这四个,除此之外不再含有其它别的质因子。注意1也被认为是丑数.丑数的前20个为1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 14, 15, 16, 18, 20, 21, 24, 25, 27, ...
( 1 <= n <= 1500)
输入格式
一个整数n。
输出格式
第n个丑数
输入示例
1000
输出示例
385875
解法1:
直接构造。
1 #include<bits/stdc++.h> 2 using namespace std; 3 int h[1505]; 4 int main(){ 5 int n,a=1,b=1,c=1,d=1; 6 cin>>n; 7 h[1]=1; 8 for(int i=2;i<=n;i++){ 9 int t=min(min(h[a]*2,h<b>*3),min(h[c]*5,h[d]*7)); 10 h[i]=t; 11 if(t==h[a]*2) a++; 12 if(t==h<b>*3) b++; 13 if(t==h[c]*5) c++; 14 if(t==h[d]*7) d++; 15 } 16 cout<<h[n]; 17 }
解法2:
set
1 #include <bits/stdc++.h> 2 using namespace std; 3 set<int> s; 4 int main(){ 5 int n; 6 cin>>n; 7 s.insert(1); 8 set<int>::iterator it; 9 it=s.begin(); 10 for(int i=1;i<n;i++){ 11 int t=*it; 12 s.insert(t*2); 13 s.insert(t*3); 14 s.insert(t*5); 15 s.insert(t*7); 16 it++; 17 } 18 cout<<*it;

浙公网安备 33010602011771号