Ugly Numbers UVA 136 丑数
2017-01-01 10:22
169 查看
解题思路:首先丑数是指不能被2,3,5以外其他素数整除的数。最小的丑数数1,对任意一个丑数x; 则2x,3x,5x也都是
丑数,一个丑数有多种生成方式,所以,每取出一个丑数都要进行判断是否已经生成过(通过set集合元素不重复的性质),还需要注意的是,本题数据应该用long long 类型存储,故自定义类型ll (typedef long long ll)。
#include<cstdio>
#include<set>
#include<queue>
using namespace std;
typedef long long ll;
int main(){
priority_queue<ll ,vector<ll> ,greater<ll> >pq;
set<ll>set1;
int a[]={2,3,5};
pq.push(1);
set1.insert(1);
int i=1;
while(true){
ll temp=pq.top();
pq.pop();
if(i==1500)
{
printf("The 1500'th ugly number is %lld.\n",temp);
break;
}
for(int j=0;j<3;j++)
{
ll t=a[j]*temp;
if(set1.count(t))continue;
set1.insert(t);
pq.push(t);
}
i++;
}
return 0;
}
deaf
丑数,一个丑数有多种生成方式,所以,每取出一个丑数都要进行判断是否已经生成过(通过set集合元素不重复的性质),还需要注意的是,本题数据应该用long long 类型存储,故自定义类型ll (typedef long long ll)。
#include<cstdio>
#include<set>
#include<queue>
using namespace std;
typedef long long ll;
int main(){
priority_queue<ll ,vector<ll> ,greater<ll> >pq;
set<ll>set1;
int a[]={2,3,5};
pq.push(1);
set1.insert(1);
int i=1;
while(true){
ll temp=pq.top();
pq.pop();
if(i==1500)
{
printf("The 1500'th ugly number is %lld.\n",temp);
break;
}
for(int j=0;j<3;j++)
{
ll t=a[j]*temp;
if(set1.count(t))continue;
set1.insert(t);
pq.push(t);
}
i++;
}
return 0;
}
deaf
相关文章推荐
- 136 - Ugly Numbers
- uva 136 丑数
- 紫书章五例题七 丑数 UVa 136(多种方法,在这里介绍优先级队列)
- UVA 136 Ugly Numbers
- Ugly Numbers, UVa 136
- 寻找丑数,把只包含因子2、3和5的数称作丑数(Ugly Number)
- 136 - Ugly Numbers
- Uva - 136 - Ugly Numbers
- UVA136-Ugly Numbers
- Ugly Number II(求第N个丑数)
- Ugly Number(丑数)系列题 Python解法
- Uva 136 丑数
- **[Lintcode]Ugly Number II 丑数 II
- 紫书章五例题七 丑数 UVa 136(多种方法,在这里介绍优先级队列)
- 丑数 uva-136 丑数
- Uva - 136 - Ugly Numbers
- 5_7 丑数(UVa136)<priority_queue的使用>
- 紫书章五例题七 丑数 UVa 136(多种方法,在这里介绍优先级队列)
- UVA - 136 Ugly Numbers
- 丑数(Uva 136)