博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
1239-贪心算法
阅读量:5164 次
发布时间:2019-06-13

本文共 3265 字,大约阅读时间需要 10 分钟。

Problem Description
A message from humans to extraterrestrial intelligence was sent through the Arecibo radio telescope in Puerto Rico on the afternoon of Saturday November 16, 1974. The message consisted of 1679 bits and was meant to be translated to a rectangular picture with 23 * 73 pixels. Since both 23 and 73 are prime numbers, 23 * 73 is the unique possible size of the translated rectangular picture each edge of which is longer than 1 pixel. Of course, there was no guarantee that the receivers would try to translate the message to a rectangular picture. Even if they would, they might put the pixels into the rectangle incorrectly. The senders of the Arecibo message were optimistic. 
We are planning a similar project. Your task in the project is to find the most suitable width and height of the translated rectangular picture. The term "most suitable" is defined as follows. An integer m greater than 4 is given. A positive fraction a / b less than or equal to 1 is also given. The area of the picture should not be greater than m. Both of the width and the height of the translated picture should be prime numbers. The ratio of the width to the height should not be less than a / b nor greater than 1. You should maximize the area of the picture under these constraints.
In other words, you will receive an integer m and a fraction a / b. It holds that m > 4 and 0 < a / b < 1. You should find the pair of prime numbers p, q such that pq <= m and a / b <= p / q <= 1, and furthermore, the product pq takes the maximum value among such pairs of two prime numbers. You should report p and q as the "most suitable" width and height of the translated picture.
 
Input
The input is a sequence of at most 2000 triplets of positive integers, delimited by a space character in between. Each line contains a single triplet. The sequence is followed by a triplet of zeros, 0 0 0, which indicated the end of the input and should not be treated as data to be processed.
The integers of each input triplet are the integer m, the numerator a, and the denominator b described above, in this order. You may assume 4 < m <= 100000 and 1 <= a <= b <= 1000.
 
Output
The output is a sequence of pairs of positive integers. The i-th output pair corresponds to the i-th input triplet. The integers of each output pair are the width p and the height q described above, in this order.
Each output line contains a single pair. A space character is put between the integers as a delimiter. No other characters should appear in the output.
 
Sample Input
5 1 2
99999 999 999
1680 5 16
1970 1 1
2002 4 11
0 0 0
 
Sample Output
2 2
313 313
23 73
43 43
37 53
题目比较简单,算是水题吧
#include
#include
#include
using namespace std;
int prime(int x)
{
int flag=1;
if(x==1)
flag=0;
if(x==2)
flag=1;
else
for(int i=2;i<=sqrt(x);i++)
{   flag=1;
if(x%i==0)
   {
      flag=0;
      break;
   }
}
if(flag)
return 1;
else
return 0;
}
int main()
{
int m,j;
int a,b;
int flag=0;
while(scanf("%d%d%d",&m,&a,&b),m,a,b)
{  flag=0;
float s=1.0*a/b;
for(int i=m;i>=4;i--)
        {
if(!prime(i))
{
for(j=2;j<=sqrt(i);j++)
{
if(i%j==0)
{
if(prime(j)&&prime(i/j)&&((1.0*j/(i/j))>=s)&&((1.0*j/(i/j))<=1))
  {    flag=1;
     break;
  }
                        }
}
}
if(flag)
          {
               printf("%d %d\n",j,i/j);
               break;
          }
        }
}
return 0;
}

转载于:https://www.cnblogs.com/kuroko-ghh/p/9363378.html

你可能感兴趣的文章
Android-Layer list
查看>>
Java语言中的访问权限修饰符
查看>>
iOS9新特性之常见关键字
查看>>
codeforce好地方啊 Bear and Elections *
查看>>
去倾听生命中另一个人的灵魂故事
查看>>
ARP协议详解之Gratuitous ARP(免费ARP)
查看>>
(转)连接带有密码的ACCESS数据库时出现“无法启动应用程序。工作组信息文件丢失,或是已被其它用户以独占方式打开”的解决方法...
查看>>
毕业生反馈(四)
查看>>
Web安全
查看>>
Uploadify 基于jquery的异步上传控件
查看>>
Android Studio Check for Update
查看>>
双层保障,年龄的输入
查看>>
jQuery之get方法
查看>>
python2实现RSA算法
查看>>
破解wifi_失败
查看>>
20145332 《网络攻防》 逆向与Bof实验
查看>>
子元素设置margin-top,父元素无法将margin-top包含在父容器的原因及解决办法
查看>>
LLDB 常用的调试命令
查看>>
Centos服务器搭建(6)——安装JDK
查看>>
C语言_第二讲_规范以及常用数据类型
查看>>