POJ-1338 Ugly Numbers-被2,3,5整除的数/只包含因子2 3 5的数

来源:互联网 发布:查看caj格式文件软件 编辑:程序博客网 时间:2024/06/04 19:28
Ugly Numbers
Time Limit: 1000MS Memory Limit: 10000KTotal Submissions: 21878 Accepted: 9772

Description

Ugly numbers are numbers whose only prime factors are 2, 3 or 5. The sequence 
1, 2, 3, 4, 5, 6, 8, 9, 10, 12, ... 
shows the first 10 ugly numbers. By convention, 1 is included. 
Given the integer n,write a program to find and print the n'th ugly number. 

Input

Each line of the input contains a postisive integer n (n <= 1500).Input is terminated by a line with n=0.

Output

For each line, output the n’th ugly number .:Don’t deal with the line with n=0.

Sample Input

1290

Sample Output

1210

Source

New Zealand 1990 Division I,UVA 136

#include <iostream>#include <cstring>#include <iomanip>#include <stdio.h>#include <cmath>#include <algorithm>using namespace std;int main(){    long long n=0,m,i,j,k,l=1000000000,a[100000];//数组不能开得太大不然容易越界    memset(a,0,sizeof(a));    a[0]=1;    for(i=1; i<l; i*=2)        for(j=1; i*j<l; j*=3)            for(k=1; i*j*k<l; k*=5)            {                ++n;                a[n]=i*j*k;            }    sort(a,a+n+1);    while(cin>>m&&m!=0)    {        cout<<a[m]<<endl;    }    return 0;}

1010 只包含因子2 3 5的数
基准时间限制:1 秒 空间限制:131072 KB 分值: 10 难度:2级算法题
K的因子中只包含2 3 5。满足条件的前10个数是:2,3,4,5,6,8,9,10,12,15。
所有这样的K组成了一个序列S,现在给出一个数n,求S中 >= 给定数的最小的数。
例如:n = 13,S中 >= 13的最小的数是15,所以输出15。
Input
第1行:一个数T,表示后面用作输入测试的数的数量。(1 <= T <= 10000)第2 - T + 1行:每行1个数N(1 <= N <= 10^18)
Output
共T行,每行1个数,输出>= n的最小的只包含因子2 3 5的数。
Input示例
518133577
Output示例
28153680
#include <iostream>#include <cstdio>#include <cstring>#include <cmath>#include <vector>#include <queue>#include <map>#include <set>#include <algorithm>//#define INF 0xfffffffusing namespace std;typedef long long ll;#define INF 1e18+100#define MAXN 1000000ll a[MAXN];int cnt = 0;void Init(){    cnt = 0;    for(ll i=1; i<INF; i*=2)        for(ll j=1; j*i<INF; j*=3)            for(ll k=1; i*j*k<INF; k*=5)                a[cnt++] = i*j*k;}int main(){#ifdef ONLINE_JUDGE#else    freopen("G:/x/read.txt","r",stdin);    freopen("G:/x/out.txt","w",stdout);#endif    ios::sync_with_stdio(false);    cin.tie(0);    Init();    sort(a, a+cnt);    int t;    cin>>t;    while(t--)    {        ll n;        cin>>n;        cout<<a[lower_bound(a+1,a+cnt+1,n)-a]<<endl;    }    return 0;}/**518133577**/




0 0
原创粉丝点击