ZUFE 问题 E: SBZhouZhentao

编程入门 行业动态 更新时间:2024-10-19 18:16:51

<a href=https://www.elefans.com/category/jswz/34/1720363.html style=ZUFE 问题 E: SBZhouZhentao"/>

ZUFE 问题 E: SBZhouZhentao

题目描述

ZhouZhentao的数学很差很差,最近他在复习《小学数学》中的有理数部分,但是他遇到了困难,因此请机智的你们来帮忙了。 课本上写着这样一道题: 无限循环小数是有理数,有理数都可以表示成分数形式。 现在给出一个无限循环小数 A(0<A<1),请你计算A的最简分数形式。 为了方便,我们用X表示无限循环小数A的循环节: 例如 X=3 时,对应的小数A是 0.333333...... 例如 X=333 时,对应的小数A也是 0.333333...... 例如 X=28 时,对应的小数A是 0.282828...... 例如 X=123456789 时,对应的小数A是 0.123456789123456789...... 现在给定一个X,请你输出X对应的无限循环小数A的最简分数形式。 例如:输入6,表示的小数是0.666666...... 最简分数形式是2/3,你应该输出2/3。
【知识拓展】 [1]最简分数:分子、分母只有公因数1的分数,或者说分子和分母互质的分数,叫做最简分数,又称既约分数。如:三分之二,九分之八,八分之三等等。 [2]在数学上,0.999999………等于1,最简分数形式是1/1。

输入

多组测试数据(大约100组),每组测试数据输入一个整数 X,表示无限循环小数A的循环节为X。(0 < X < 99999,并且x不会等于9、99、999、9999)

输出

每组测试数据输出一行,形如p/q(p与q互质),表示无限循环小数A的最简分数。

样例输入

6

样例输出

2/3

提示

输入6,表示的小数是0.666666...... 最简分数形式是2/3。

这题需要知道一些数学知识。

设xyz为循环节,比如0.xyzxyz....  = a;

a * 1000 = xyz.xyzxyz....;

a * 1000 - a = xyz = 999 * a;

所以  a =  xyz / 999  ;

能推出其他值

#include<bits/stdc++.h>using namespace std;int gcd(int x,int y)
{while(y != 0){int temp = x % y;x = y;y = temp;}return x;
}
int main()
{int n;while(cin >> n){int num;if(n < 10)num = 1;else if(n < 100)num = 2;else if(n < 1000)num = 3;else if(n < 10000)num = 4;else if(n < 100000)num = 5;int temp = 9;for(int i = 1; i < num ; i ++)temp = temp * 10 + 9;int t = gcd(temp,n);cout << n / t << "/" << temp / t << endl;}return 0;
}


更多推荐

ZUFE 问题 E: SBZhouZhentao

本文发布于:2024-03-08 08:36:33,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1720362.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:ZUFE   SBZhouZhentao

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!