FZU 2193 So Hard (有限小数转换最简分数)(想法题)
题目链接: 传送门
So Hard
Time Limit: 1000MS Memory Limit: 65536K
题目描述
请将有限小数化为最简分数。
输入
一个整数n 表示需要转化的小数个数; 接下来n行,每行有一个有限小数。(保证小数位数不超过9位)
输出
输出有n行,每行为小数对应的最简分数
输入示例
2
0.5
0.4
输出示例
1/2
2/5
Hint
注意精度问题,数据保证不会有类似1.0的小数。
思路
将小数扩大至整数,然后求出这个整数与扩大倍数的最大公因数,除一下,得到最简分数。
具体细节看代码注释
#include<stdio.h>
int gcd(int m,int n)
{
int tmp;
if (m < n)
{
tmp = m;
m = n;
n = tmp;
}
if (m % n == 0)
{
return n;
}
else
{
return gcd(n,m%n);
}
}
int main()
{
int N,i;
scanf("%d",&N);
while (N--)
{
double num1,num2;
int sum1,sum2 = 1,fac;
scanf("%lf",&num1);
for (i = 1;i <= 9;i++)
{
num1 *= 10;
sum2 *= 10;
num2 = num1 + 0.000001; //由于double类型的精度问题,如“1”,double可能以“0.99999……”保存,
// 所以加一个极小的小数使之能得到想要的整数
if (num1 - (int)num2 <= 0.000001) //还是由于double的精度问题,可能printf输出的num1值和(int)num2)值
{ //相同 ,但是内部这两个数由于小数位的问题是不等的,判断相等方法就用二者差值是否极小
break;
}
}
sum1 = (int)num2;
fac = gcd(sum1,sum2);
printf("%d/%d\n",sum1/fac,sum2/fac);
}
return 0;
}
#include<bits/stdc++.h>
typedef __int64 ll;
#define eps 1e-11
using namespace std;
ll gcd(ll a,ll b)
{
return b==0?a:gcd(b,a%b);
}
int main()
{
int t;
cin>>t;
while(t--)
{
double x;
scanf("%lf",&x);
ll fz=(ll)((x+eps)*1000000000);
ll fm=1000000000;
ll tep=gcd(fz,fm);
printf("%I64d/%I64d\n",fz/tep,fm/tep);
}
return 0;
}
FZU 2193 So Hard (有限小数转换最简分数)(想法题)的更多相关文章
- idea的mybatis的mysql语句的小数转换百分号
其实mysql的小数转换百分数有两种函数ROUND和TRUNCATE 例子: 1.round(x,d) :用于数据的四舍五入,round(x) ,其实就是round(x,0),也就是默认d为0: 这 ...
- java 小数转换成二进制
32位单精度二进制 = [1个符号位] [8个阶码位] [23个尾数位] 64位单精度二进制 = [1个符号位] [11个阶码位] [52个尾数位] 小数 = [正负符号位] [整数部分] . [小 ...
- PHP百分号转小数,php 小数转换百分数函数
PHP百分号转小数: <?php $a = "20.544545%"; echo (float)$a/100; ?> php 小数转换百分数函数: function x ...
- Codeforces 984 扫雷check 欧几里得b进制分数有限小数判定 f函数最大连续子段
A /* Huyyt */ #include <bits/stdc++.h> #define mem(a,b) memset(a,b,sizeof(a)) #define mkp(a,b) ...
- 使用Java将阿拉伯数字转换为中文数字(适配小数转换)
Java数字转换工具类 简介 该工具类可以将整数.小数.负数转换为中文的数字,如: 0 --> 零 1 --> 一 2.1 --> 二点一 -2.1 --> 负二点一 具体代码 ...
- Decimal To Fraction 小数转换成分数
以0.25为例, 0.25 * 100 = 25, 求25 和 100 的最大公约数gcd. 25/gcd 为分子. 100/gcd为分母. //小数转分数 //0.3 -> 3/10, 0.2 ...
- mysql 小数转换成百分数查出(保留两位小数百分数)
SELECT id as 'ID',GROUP_CONCAT(concat(truncate(royalties *100,2),'%')) as '比例' FROM yser FROM id in( ...
- PTA-7-20 表达式转换(中缀转后缀,带括号,负数,小数转换)
本题考点:中缀表达式转后缀表达式. 难点: 带有小数的数字 数字可能带有正负号 题目描述: 算术表达式有前缀表示法.中缀表示法和后缀表示法等形式.日常使用的算术表达式是采用中缀表示法,即二元运算符位于 ...
- Oracle中将小数转换成字符丢零.截取小数.除数为零解决法
如下所示,前面少个0 SQL>select money from users where username ='LEI'; money --------- .3256 解决方法: SQL> ...
随机推荐
- Python3.1-标准库之Numpy
这系列用来介绍Python的标准库的支持Numpy部分.资料来自http://wiki.scipy.org/Tentative_NumPy_Tutorial,页面有许多链接,这里是直接翻译,所以会无法 ...
- 关于lazyload插件的一些笔记
Lazy Load Plugin for jQuery 需要引入 jQuery,兼容各种 IE,适合 PC 端使用.详细 API 可以参考 http://www.appelsiini.net/proj ...
- .net程序员转行做手游开发经历(一)
从辞职到自己开发游戏也有几个月的时间了,游戏也已经在AppStore上线了,我觉得我有必要写点东西,算是留下的一些记忆,也可以和广大博友分享下自己的创业经历,这可能不是一篇成功的创业经历,因为故事还在 ...
- 怎样关闭google的自动更新
谷歌的自动更新很烦人的,只要你点击关于Google Chrome,谷歌就会自动更新成最新版本. 但是sencha框架好像与谷歌29.0以上的兼容性不是很好,所以关闭谷歌自动更新的需求来了,网上很多人说 ...
- win8/8.1 免密码登录设置
http://www.ehow.com/how_8013338_start-windows-password.html 原文见上方链接 1,win+r调出命令输入窗口,输入 netplwiz 回车 2 ...
- MongoDB数据库GroupBy查询使用Spring-data-mongondb的实现
以前用MongoDB数据库都是简单的查询,直接用Query就可以,最近项目中用到了分组查询,完全不一样.第一次遇到,搞了好几天终于有点那意思了. 先上代码: import java.math.BigD ...
- 使用D3绘制图表(6)--竖直柱状图表
竖直柱状图的绘制是在水平柱状图的基础上修改的. 1.html代码 <!DOCTYPE html> <html> <head> <meta charset=&q ...
- 2016年GitHub 排名前 100 的安卓、iOS项目简介(收藏)
排名完全是根据 GitHub 搜索 Java 语言选择 (Best Match) 得到的结果, 然后过滤了跟 Android 不相关的项目, 所以排名并不具备任何官方效力, 仅供参考学习, 方便初学者 ...
- Python:no encoding declared 错误
使用Python编译的时候出现如下错误: SyntaxError: Non-ASCII character ‘\xe5’ in file magentonotes.com.py on line 2, ...
- 关于ExtJS、JQuery UI和easy UI的选择问题
转自百度知道. 问:做企业级应用,比如***管理系统,不需要华丽的特效,只希望简单,风格统一.能用到的只有messagebox.tree.grid大概这几个,其他特效不要,忘大神根据自己的见解以及我这 ...