首页 > 编程知识 正文

0.22222222化成分数是多少,杭电hdoj

时间:2023-05-05 03:26:51 阅读:43746 作者:306

小数化分数2 time limit :1000/1000 ms (Java/others )内存限制336032768/32768 k (Java/others ) )。

totalsubmission(s ) : 3923Accepted Submission(s ) :1592 problemdescriptiondldpd在数学课上听老师说,任何小数都表示成分数的形式

请写一个程序,不仅让普通小数成为最简单的分数,而且让循环小数成为最简单的分数。

Input的第一行是整数n,表示数据集的数目。

每组数据只有一个纯小数。 也就是说,整数部分为0。 小数位数不超过9位,循环部分用()括起来。

Output按对应的小数转换为最简单的分数并输出,占1行。 示例输入30.(4)0.50.32 ) 692307 )示例输出4/91/217/52

这个问题主要要考虑无限小数部分,无限小数分为无限循环小数和无限非循环小数。 无限不循环小数不能是分数。 主题

中给出的无限小数都是无限循环小数。 基本的想法是,通过将小数扩大到倍数,使放大后的小数和放大前的小数部分相同,从而生成两个小数

差距可以得出答案。

eg:8(520 ) )。

0.8(520 ) 10=8. (520 ) 1

0.8(520 ) 10000=8520.(520 ) 2

2-1得0.8(520 ) * 9990=8512然后得到答案。 ()~ (kalili招新时说的() ) ) )。

交流电源线:

# include ' iostream ' # include ' cstdio ' # include ' cstring ' # include ' algorithm ' usingnamespacestd; 常数上限=20; char s[MAXN]; int fz,fm; intgcd(intx,int y ) {return y==0? x:gcd(y,x % y ); }void work () {int t1=1,t2,I,k; fz=0; for(I=2; s[i] s[i]!=' (); I ) {fz=fz * 10 s[i] - '0'; t1 *=10; }fm=fz; t2=t1; if(s[I]!=' ' ) {k=gcd(T1,fz ); fz /=k; 调频fm=t1/k; 返回; (for ) I; s[i]!=() ); I ) {fm=fm * 10 s[i] - '0'; t2 *=10; }fz=fm - fz; 调频fm=t2 - t1; k=gcd(FZ,fm ); fz /=k; 调频fm /=k; }intmain(intargc,char const *argv[] ) {int t; 扫描(' % d ',t ); while(t-- ) Scanf ) ' %s ',s ); 工作(; printf('%d/%d(n ),fz,fm ); }返回0; }

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。