-
2021-11-15 16:58:33
输入两个整数x1,x2,输出x1/x2的小数部分的循环节
测试案例:
输入:
- 8 7
- 2 210
输出
- 0.(142857)
- 0.0(095238)
#include <stdio.h> int main() { int a[1000], b[1000];//a表示余数*10,b表示商 int i = 0, j;//j为b中循环节的起始位,i为终止位 int c, d;//c为被除数,d为除数 bool flag; scanf("%d %d", &c, &d); a[0] = c; while (1) { flag = false; b[i] = a[i] / d; a[i+1] = (a[i] - b[i] * d) * 10; i++; for (j = 0; j < i; j++) { if (a[i] == a[j]) { flag = true; break; } } if (flag) break; } printf("0."); for (int k = 1; k < i; k++) { if (k == j) { printf("("); } printf("%d", b[k]); if (k == i - 1) { printf(")"); } } }
更多相关内容 -
循环小数怎么表示
2020-12-20 11:04:49展开全部一、循环节表示循环节的表示方法。找到小数部分的循环小数,如果它是一个数636f70793231313335323631343130323136353331333366306464字循环,就在这个数字的上面点一个点;如果2个数字循环,就在这两个数字...展开全部
一、循环节表示
循环节的表示方法。找到小数部分的循环小数,如果它是一个数636f70793231313335323631343130323136353331333366306464字循环,就在这个数字的上面点一个点;如果2个数字循环,就在这两个数字上面分别点一个点;如果出现2个以上数字的,就在第一个数字和最后一个数字的上面点一个点。
循环小数的缩写法是将第一个循环节以后的数字全部略去,而在第一个循环节首末两位上方各添一个小点。
例如:35.232323…缩写为
(它读作“三十五点二三,二三循环”)
二、分数表示
把循环小数的小数部分化成分数的规则:
1、纯循环小数小数部分化成分数:将一个循环节的数字组成的数作为分子,分母的各位都是9,9的个数与循环节的位数相同,最后能约分的再约分。
2、混循环小数小数部分化成分数:分子是第二个循环节以前的小数部分的数字组成的数与不循环部分的数字所组成的数之差,分母的头几位数字是9,9的个数与一个循环节的位数相同,末几位是0,0的个数与不循环部分的位数相同。
扩展资料
运用:
设a为循环小数,化成的分数为x,循环的起始位置为n,循环节位数为N。则有
10^(n+N)*x-10*n*x=10^(n+N)*a-10^n*a,解得x=[10*(n+N)*a-10^n*a]/[10*(n+N)-10^n]. 例如,将循环小数0.1255······5的循环化为循环小数。循环的起始位置为2,循环节为1,所以 x=113/900.
如果以上面这种方法去算循环节为9的循环小数,例如0.99······9的循环,会发现其值为1。为了更明白地表现出来,做如下考虑:
1/3=0.33······
上式等号两边同时乘以3,可以得到
1=0.99······
从上面可知,0.99······确实是等于1的。下面使用极限对其进行证明。
构造一个数列{xn},0.9, 0.99, 0.999, 0.9999, ······, 0.9·····(第n项数列,小数点后有n个9)。存在常数1,对于任意给定的正数e(不论它多么小),总存在正整数N,使得当n>N时,不等式
|xn-1|
都成立。即数列{xn}的极限为1。得证。
-
C++之求循环小数循环节
2022-04-21 22:12:35任意分数都可以写成小数的形式,样例是有限小数或无限循环小数中的一种。 ■输入描述: 两个正整数p和q,代表分子和分母。 两个正整数p和q,代表分子和分母.且1 < p,q≤10^12 ■输出描述: 如果p/q为有限小数,则...■题目描述 :
任意分数都可以写成小数的形式,样例是有限小数或无限循环小数中的一种。
■输入描述:
两个正整数p和q,代表分子和分母。 两个正整数p和q,代表分子和分母.且1 < p,q≤10^12
■输出描述:
如果p/q为有限小数,则输出-1。 如果p/q为有限小数,则输出-1.否则输出循环节前面部分的长度、以及循环节的长度。 否则输出循环节前面部分的长度、以及循环节的长度.■思路:
求循环节,最重要的在于被除数被除后的余数,如果余数和之前出现的余数相同,说明进入了循环,找到这个余数所在的位置就可以知道循环节的位置和长度。■代码:
#include<iostream> using namespace std; int main() { long long int a[10000]={0},b[10000]={}; long long int p,q; int i,j; int n,m,t; cin>>p>>q; n=p; m=q; for(i=0;;i++) { if(n<m) n=n*10; t=n%m; a[t]=a[t]+1; //记录余数所在位置 b[i]=t; //保存余数 if(a[t]>=2) break; //此时为循环节点结束处 if(t==0) {cout<<"-1"<<endl;return 0;} n=n%m; if(n==0) {cout<<"-1"<<endl;return 0;} } for(j=0;j<i;j++) { if(b[j]==b[i]) {cout<<j<<" "<<i-j<<endl;return 0;} //当余数相等时找到循环节点开始处 } }
■代码缺陷
无法完成较大的p、q的求解。
-
循环小数(自创算法读取循环小数的小数部分)
2018-09-10 08:22:24自创算法读取循环小数小数部分,还包括获取字符串所有子集。 -
求循环小数
2014-10-31 15:44:36对于任意的真分数 N/M ( 0 ),均可以求出对应的小数。如果采用链表表示各个小数,对于循环节采用循环链表表示,则所有分数均可以表示为如下链表形式。 -
用C语言怎么求循环小数的循环节?
2021-05-23 08:48:01满意答案zybehqej推荐于 2016.09.09采纳率:43%等级:8已帮助:512人1、判断循环的关键是在确定每位小数的...2、例程:intrepetend(//求循环节的函数,返回值为循环长度,共3个参数inta,//第一个参数为被除数intb,/...满意答案
zybehqej
推荐于 2016.09.09
采纳率:43% 等级:8
已帮助:512人
1、判断循环的关键是在确定每位小数的时候,判断余数是否出现与之前的相同。
2、例程:int repetend( //求循环节的函数,返回值为循环长度,共3个参数
int a, //第一个参数为被除数
int b, //第二个参数为除数
char *Str) //第三个参数为用于存循环节每一位的数组指针
{int Rem[255], //用于存余数的整型数组
Div1=a, //把被除数保存下来,因为后面可能会改变被除数的值
Div2=b; //把除数也保存下来,因为后面可能会改变除数的值
if(a==0 or b==0) return 0; //如果被除数或者除数为0,函数返回0值
if(Div1<0) Div1=Div1*-1; //正负并不影响求循环节,所以被除数和除数都取绝对值
if(Div2<0) Div2=Div2*-1; //正负并不影响求循环节,所以被除数和除数都取绝对值
for(;Div1*10
/*如果被除数乘以10小于除数,就通过一个循环不断让被除数乘以10,直到被除数乘以10大于
或者等于被除数,这样可以清除掉小数点后面的0.000000这些多余的数据。*/
Rem[0]=Div1%Div2; //第一次保存余数
for(int i=0;;i++) //用一个死循环检索小数点后面的每一位
{Div1=Rem[i]*10; //每一次的被除数都为前一次余数乘以10
Str[i]=Div1/Div2; //得到第i位小数(0为第1位,1为第2位,以此类推)
Rem[i+1]=Div1%Div2; //保存余数
if(Rem[i+1]==0) //不管小数点后第几位,如果余数为0,说明能除尽,不会出现循环
{Str[0]=0; //循环节为0
return 1;} //函数返回1,这是根据你题目中要求的,但我觉得应该设为0比较合理
for(int j=0;j<=i;j++) //再用一重循环比较之前所有的余数,确定循环节起始点
if(Rem[i+1]==Rem[j])
/*判断是否出现循环的关键是判断余数是否和之前的某一次相同。如果当前余数等于之前的某一
次余数,说明开始出现循环。循环点的起点为j,终点为i,循环长度为(i-j)+1位小数,当上述判断为真时,就可以结束函数*/
{for(int k=0;k<=(i-j);k++) Str[k]=Str[j+k]; //整理循环节数组
return (i-j)+1;} //函数返回循环长度
}
}
00分享举报
-
C语言实现小数转分数(包括带循环节小数)
2021-04-29 21:49:09C语言实现小数转分数,包括带循环节的小数 -
求循环小数的循环节C/C++
2020-05-24 21:53:17即给定一个数n,输出1/n的结果,若是循环小数,则只输出第一个循环节。例如:输入 n 3 输出 0.3 直接上代码讲解: #include <algorithm> #include <iostream> using namespace std; int a[100005];//此... -
求循环小数的表示以及循环节长度
2019-12-30 21:10:32求1/n,如果有循环结,用括号把循环结括起来 #include <iostream> #include<algorithm> #include <stdio.h> #include <string> #include <string.h> #include <map> #include &... -
循环小数表示法
2020-12-20 11:04:48关联文章的地址/*有理环循小数1/7 = 0.142857142... 是个无限环循小数。任何有理数都可以示表为无限环循小数的情势。本目题要求是即:给出一个数字的环循小数示表法。例如:输入:1,5则出输:0.2输入:1,7则出输:0... -
蓝桥杯 历届试题 小数第n位 循环小数的循环节
2021-04-17 10:48:41问题描述我们知道,整数做除法时,有时得到有限小数,有时得到无限循环小数。如果我们把有限小数的末尾加上无限多个0,它们就有了统一的形式。本题的任务是:在上面的约定下,求整数除法小数点后的第n位开始的3位数... -
JAVA-获取无限循环小数的循环节
2020-03-27 11:07:03JAVA获取无限循环小数的循环节 -
面试:输出循环小数的循环节
2021-02-27 17:27:40循环小数即为有理数的小数表示形式,例:定理:一个分母为N的循环小数的循环节位数最多不超过N-1位。(1) 化为分数的方法我先想到用高中的等比数列的和求极限方式求取(a1/(1-q))。 (2)利用长除法可以将分... -
最长的循环节 之 有趣的无限循环小数
2018-04-29 19:23:21如题:1035 最长的循环节 基准时间限制:1 秒 空间限制:131072 KB 分值: 20 难度:3级算法题正整数k的倒数1/k,写为10进制的小数如果为无限循环小数,则存在一个循环节,求<=n的数中,倒数循环节长度... -
求循环小数循环节
2018-02-07 15:10:47任何有理数都可以表示为无限循环小数的形式。 本题目要求即是:给出一个数字的循环小数表示法。 例如: 输入: 1,5 则输出: 0.2 输入: 1,7 则输出: 0.[142857] 输入: 7... -
计蒜客 分数化小数 求循环小数的表示以及循环节长度
2018-09-25 18:07:07对于一个分数(不一定是最简形式),给出它的小树形式,如果小数有循环节的话,把循环节放在一对圆括号中. 例如,1/4 =0.25,1/3=0.3333写成0.(3),1/7= 0.142857142857...写成0.(142857)。如果结果是一种整数xxx,... -
循环节长度
2021-04-21 22:35:53一个渣渣的分享:循环节长度两个整数做除法,有时会产生循环小数,其循环部分称为:循环节。比如,11/13=6=>0.846153846153..... 其循环节为[846153] 共有6位。下面的方法,可以求出循环节的长度。请仔细阅读代码... -
循环小数 计算小数循环节和循环节长度 202 - Repeating Decimals
2018-01-21 09:34:22思路:分数不能表示无限不循环小数。建立3个数组,一个放商,一个放余数,一个对应下角标的数若是余数则元素为1,即记录余数存在。循环除数加一次,若余数为0,则循环节长度为1,若当前得到的余数已经存在,则有循环... -
分数化小数并找出循环节
2017-08-08 15:56:40输入两个数字m,n,输出m/n的结果,并找出循环节 0,n<=10000 -
小数循环节
2020-10-30 15:19:501/7 = 0.142857142… 是个无限循环...程序输出两个整数做除法产生的小数或无限循环小数(循环节用方括号括起)。 题目貌似不难,但却让人很难找到着手点,对于循环小数的判断,不知道大家有什么好的方法,这里,我讲一 -
将分数用小数表示,并导出其循环节
2012-12-08 10:38:59利用手工除法原理,导出所输入分数的小数形式,并求出小数的循环节(小数的存储结构为单链表)。内含源文件+编译后的文件。开发平台为VC++ 6.0. -
【题目】两个整数相除得到循环小数,求循环节
2018-08-30 22:52:25两个整数相除得到循环小数,求循环节 例如: 1/7 = 0.142857142857142857… 循环节是142857 思路: 除法运算时,两个数相除得到整数和余数,然后把余数乘以10,再除以除数得到下一位,以此类推: 当得到的... -
算法:判断有限还是无限循环小数并寻找循环节
2020-05-20 12:47:47n≤1000),判断分数m/n是有限小数还是循环小数。 如果m/n是有限小数,则输出分数的值;如果m/n为循环小数,则把循环部分括在括号中,并打印输出。 代码: #include<stdio.h> bool f(int n) //判断是否是有限还是... -
循环小数java uva202
2021-10-12 20:08:05给定一个分数(任何有理数都可以表示成循环小数),请按照格式输出该分数的结果。 输出格式 将循环节用括号包裹起来,如果循环节长度超过50位就只输出前50位,剩下的用"…"代替。第二行前面有三个空格。 import java... -
c语言怎样找无限循环小数的循环体
2022-05-24 20:35:472)判断分母是否还有2和5之外的其它质因数,若有、则为无限循环小数 3)找到一个形为 9...90..0的数字 c,即连续m个9、n个0的一个数字(m>=1、n>=0)、且这个数字c能够被分母b整除;且记 m个9为 c2, 则有 c=... -
小数,无限循环小数化为分数
2013-11-24 10:02:34无限循环小数,如0._1,3.5_142851,其中“_”后的数字表示循环节。 小数部分(不含下划线)的位数不超过8位。 【输出形式】 将结果写到标准输出,占一行。形式为:x/y。x、y为整数,分别表示分子与分母。 ... -
高分悬赏:Java语言输出一个无限循环小数的循环节,例子如下:
2020-05-21 21:13:12高分悬赏:Java语言输出一个无限循环小数的循环节,例子如下: 输入1/7 输出142857