FZU 2193 So Hard (有限小数转换最简分数)(想法题)
题目链接: 传送门
So Hard
Time Limit: 1000MS Memory Limit: 65536K
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;
}
┆ 凉 ┆ 暖 ┆ 降 ┆ 等 ┆ 幸 ┆ 我 ┆ 我 ┆ 里 ┆ 将 ┆ ┆ 可 ┆ 有 ┆ 谦 ┆ 戮 ┆ 那 ┆ ┆ 大 ┆ ┆ 始 ┆ 然 ┆
┆ 薄 ┆ 一 ┆ 临 ┆ 你 ┆ 的 ┆ 还 ┆ 没 ┆ ┆ 来 ┆ ┆ 是 ┆ 来 ┆ 逊 ┆ 没 ┆ 些 ┆ ┆ 雁 ┆ ┆ 终 ┆ 而 ┆
┆ ┆ 暖 ┆ ┆ 如 ┆ 地 ┆ 站 ┆ 有 ┆ ┆ 也 ┆ ┆ 我 ┆ ┆ 的 ┆ 有 ┆ 精 ┆ ┆ 也 ┆ ┆ 没 ┆ 你 ┆
┆ ┆ 这 ┆ ┆ 试 ┆ 方 ┆ 在 ┆ 逃 ┆ ┆ 会 ┆ ┆ 在 ┆ ┆ 清 ┆ 来 ┆ 准 ┆ ┆ 没 ┆ ┆ 有 ┆ 没 ┆
┆ ┆ 生 ┆ ┆ 探 ┆ ┆ 最 ┆ 避 ┆ ┆ 在 ┆ ┆ 这 ┆ ┆ 晨 ┆ ┆ 的 ┆ ┆ 有 ┆ ┆ 来 ┆ 有 ┆
┆ ┆ 之 ┆ ┆ 般 ┆ ┆ 不 ┆ ┆ ┆ 这 ┆ ┆ 里 ┆ ┆ 没 ┆ ┆ 杀 ┆ ┆ 来 ┆ ┆ ┆ 来 ┆
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)