Problem Description
source:https://uva.onlinejudge.org/external/1/136.html
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, 15, ...
shows the first 11 ugly numbers. By convention, 1 is included.
Write a program to find and print the 1500’th ugly number.
Input
There is no input to this program.
Output
Output should consist of a single line as shown below, with ‘’ replaced by the number
computed.
Sample Output
The 1500'th ugly number is <number>.
Solution:
source:https://uva.onlinejudge.org/external/1/136.html
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, 15, ...
shows the first 11 ugly numbers. By convention, 1 is included.
Write a program to find and print the 1500’th ugly number.
Input
There is no input to this program.
Output
Output should consist of a single line as shown below, with ‘
Solution:
#include<stdio.h>
#define min(a,b) (a<b? a:b)
long ugly[1502],x,y,z;
void UglyGen()
{
int a,b,c,n;
ugly[1]=a=b=c=n=1;
while(n!=1500)
{
x=2*ugly[a];
y=3*ugly[b];
z=5*ugly[c];
ugly[++n]=min(x,min(y,z));
if(ugly[n]==x)
a++;
if(ugly[n]==y)
b++;
if(ugly[n]==z)
c++;
}
}
int main()
{
UglyGen();
printf("The 1500'th ugly number is %ld.\n",ugly[1500]);
return 0;
}
No comments:
Post a Comment
Write your comment - Share Knowledge and Experience