uva10976—分数拆分
2016-05-27 17:10
309 查看
题意:
输入一个正整数k,找到所有的正整数 x >= y,使得1 / k = 1 / x + 1/ y 。
Input:
2
12
output:
2
1/2 = 1/6 + 1/3
1/2 = 1/4 + 1/4
8
1/12 = 1/156 + 1/13
1/12 = 1/84 + 1/14
1/12 = 1/60 + 1/15
1/12 = 1/48 + 1/16
1/12 = 1/36 + 1/18
1/12 = 1/30 + 1/20
1/12 = 1/28 + 1/21
1/12 = 1/24 + 1/24
分析:
这是一个穷举题,所以首先要找到界限,我们不妨来看y的范围,由于1 / k = 1 / x + 1/ y; y的范围就确定了,是从k+1到2k,所以
可以根据上式,用y来表示x,x=(k * y) / (y - k),最后利用 x >= y ,穷举所有符合题意的式子就可以了。
代码:#include <bits/stdc++.h>
using namespace std;
int k,x,y;
int num;
int main()
{
while(~scanf("%d",&k)&&k)
{
num=0;
for(int y=k+1; y<=2*k; y++)
{
if((k*y)%(y-k)==0)
{
int t=(k*y)/(y-k);
if(t>=y)
num++;
}
}
cout <<num<<endl;
for(int y=k+1; y<=2*k; y++)
{
if((k*y)%(y-k)==0)
{
int t=(k*y)/(y-k);
if(t>=y)
printf("1/%d = 1/%d + 1/%d\n",k,t,y);
}
}
}
return 0;
}
输入一个正整数k,找到所有的正整数 x >= y,使得1 / k = 1 / x + 1/ y 。
Input:
2
12
output:
2
1/2 = 1/6 + 1/3
1/2 = 1/4 + 1/4
8
1/12 = 1/156 + 1/13
1/12 = 1/84 + 1/14
1/12 = 1/60 + 1/15
1/12 = 1/48 + 1/16
1/12 = 1/36 + 1/18
1/12 = 1/30 + 1/20
1/12 = 1/28 + 1/21
1/12 = 1/24 + 1/24
分析:
这是一个穷举题,所以首先要找到界限,我们不妨来看y的范围,由于1 / k = 1 / x + 1/ y; y的范围就确定了,是从k+1到2k,所以
可以根据上式,用y来表示x,x=(k * y) / (y - k),最后利用 x >= y ,穷举所有符合题意的式子就可以了。
代码:#include <bits/stdc++.h>
using namespace std;
int k,x,y;
int num;
int main()
{
while(~scanf("%d",&k)&&k)
{
num=0;
for(int y=k+1; y<=2*k; y++)
{
if((k*y)%(y-k)==0)
{
int t=(k*y)/(y-k);
if(t>=y)
num++;
}
}
cout <<num<<endl;
for(int y=k+1; y<=2*k; y++)
{
if((k*y)%(y-k)==0)
{
int t=(k*y)/(y-k);
if(t>=y)
printf("1/%d = 1/%d + 1/%d\n",k,t,y);
}
}
}
return 0;
}
相关文章推荐
- 〔C# Note〕面向对象篇
- jquery的each()详细介绍
- Android适配参考
- c++ 优先队列
- 教你改变UITextFiled的placeholder颜色
- Bootstrap3.0学习教程之JS折叠插件
- window环境下安装node.js
- 单调队列(双端队列) poj2823 hdoj3415 hdoj3530
- 动态规划算法学习
- JAVA学习(10) 继承(4) 抽象类和抽象方法
- hadoop集群搭建
- C# 委托 回调 操作UI主线程 学习笔记
- Maven + Eclipse
- 日常开发——Service, Notification显示下载进度
- 并发访问sqlite数据库出现databse is locked的错误的一个解决办法
- html学习笔记(一)
- sas:利用SQL连接表
- django xadmin 外键
- 并发访问sqlite数据库出现databse is locked的错误的一个解决办法
- 安装logstash,elasticsearch,kibana三件套(转)