poj1079 2010.2.17
来源:互联网 发布:淘宝链接e22a 编辑:程序博客网 时间:2024/04/30 14:29
poj1079 2010.2.17
题目大意:
给出一个分数,比如1498/902。求出当分母分别为1, 2, ....的时候,最接近1498/902的分数。
比如:
当分母为1的时候,最接近1498/902的分数为 1/1。
当分母为2的时候,最接近1498/902的分数为 3/2。
当分母为3的时候,最接近1498/902的分数为 5/3。
。。。
而且,随着分母的增加,越来越接近原来的分数。
注意:分数必须是最简的,不能再约分了。
min存上一个分数与标准分数的差。
standard存标准分数
调试原因:
没有进行类型转换,计算时应该把整型强行转换成浮点类型。
#include <stdio.h>#include <string.h>#include <math.h>int a,b;double standard,min;int okok(int,int);// 判断是不是可以约分,可以约分函数值为0,不可以月份函数值为1;void doit();// 依次枚举分母,看是不是可以满足条件;int okok(int x,int y){int i,pp;if ((x==y)&&(x!=1)) return 0;if (x>y) pp=y-1;else pp=x-1;for(i=2;i<=pp;i++)if ((x%i==0)&&(y%i==0))return 0;return 1;}void doit(){int i,k1,mid;double abss,min1;for(i=1;i<=b;i++){//printf("%d-------i",i);k1=0;min1=min;mid=(int)(i*standard);//printf("mid--------1 %d\n",mid);abss=fabs((double)mid/(double)i-standard);//printf("abs----1 %lf\n",abss);if ((abss<min)&&(okok(mid,i))){k1=mid;min1=abss;}mid++;abss=fabs((double)mid/(double)i-standard);//printf("abs----2 %lf\n",abss);if (k1){if (abss<min1){k1=mid;min1=abss;}}elseif ((abss<min)&&(okok(mid,i))){k1=mid;min1=abss;} if (k1) {min=min1;printf("%d/%d\n",k1,i); }}}void main(){while (scanf("%d %d",&a,&b)!=EOF){min=9999999999.9;standard=(double)a/(double)b;//printf("%lf %lf\n",standard,min);doit();printf("\n");}}
0 0
- poj1079 2010.2.17
- POJ1079
- 【poj1079】 Triangle
- POJ1079 Red and Black(搜索)
- poj2506 2010.2.17
- poj1221 2010.2.17
- poj1273 2010.2.17
- poj1459 2010.2.17
- poj1047 2010.2.17
- poj1503 2010.2.17
- poj1061 2010.2.17
- poj2262 2010.2.17
- 2010.2.10
- 2010.2.22
- 2010.2.23
- 2010.2.24
- 2010.2.25
- 2010.2.26
- 基于InfluxDB&Grafana的JMeter实时性能测试数据的监控和展示
- Java学习心得——jsp中引入css等格式的配置方法
- 常指针与常引用
- Java笔记---内部类的使用
- 棋牌游戏服务器架构: 详细设计(三) 数据库设计
- poj1079 2010.2.17
- IList和List的 区别
- [Leetcode]149. Max Points on a Line @python
- 如何将 .net2.0注册到IIS ,重新注册IIS
- freemarker中include与import的区别
- db2 runstates
- [转] 金山CEO求伯君今退休 老一代程序员时代结束
- oracle 创建数据库时 Enterprise Manager 配置失败
- virtualenv的AssertionError: Filename C:\Python27\Lib\os.py does not start with any of these pref的一些办法