求小数的循环节
来源:互联网 发布:js鼠标滚动条事件 编辑:程序博客网 时间:2024/06/01 20:10
求小数的循环节:
如X=4,Y=7; 输出:X/Y=0.(5714285714)
解法:很简单,利用不断计算X=X%Y的值是否为0,如果为0,说明是一个有限小数,如果不为0,判断这个值之前是否出现过,如果出现过说明我们已经找到了这个小数的循环节
#include<iostream>using namespace std;#define MAXLENGTH 100int ANS[MAXLENGTH];//存储答案int r[MAXLENGTH];//存储余数int main(){int j, LEN=0;int x=6,y=6;while(true){ANS[LEN]=x/y;//表示整数部分(ANS[0])x=x%y;for(j=LEN;j>0;j--)//从余数表里往回找,直到第一个重复,余数表从下标一开始放if(x==r[j])break;//找到了第一个重复点退出if(x==0||j>0)//j表示第一个重复点,或者已经除尽,退出循环break;elser[++LEN]=x;x=x*10;}//打印结果cout<<ANS[0]<<".";for(int i=1;i<=LEN;i++){if(i==j)cout<<"(";cout<<ANS[i];}if(x!=0) cout<<")";cout<<endl;system("pause");return 0;}
#include<iostream>using namespace std;int ANS[1000];//存放运算结果,其中ANS【0】表示整数部分int R[1000];//存放运算结果,其中ANS【0】表示整数部分void Div(int x,int y){if(y==0)return;for(int i=0;i<y;i++)R[i]=-1;int len=0;//结果的长度//计算整数部分的余数ANS[len]=x/y;x=x%y;while(x!=0&&R[x]<0){R[x]=len;//用来表示这是第几次除法产生的余数x*=10;ANS[++len]=x/y;x=x%y;}//打印小数if(x==0)//是有限小数{cout<<ANS[0]<<".";for(int i=1;i<=len;i++)cout<<ANS[i];}else{cout<<ANS[0]<<".";for(int i=1;i<=len;i++)//注意这里最后一位已经开始循环了{if(i==R[x]+1)cout<<"(";cout<<ANS[i];}cout<<")";}}int main(int argc,char* argv[]){Div(4,127);system("pause");return 0;}
0 0
- 求小数的循环节
- 求分数的循环节和小数表示
- 小数的循环节
- 好题——hdu2522(小数问题:求1/n的第一个循环节)
- 华为编程题:求小数循环节问题
- 小数循环节
- uva 202 小数循环节
- 51nod 1035 最长的循环节(无限小数的循环节)
- 如何求一个真分数的循环节
- 求Fibonacci数列的循环节
- 求无限循环小数的循环节长度
- 求n个数的第K小数
- [OpenJudge-NOI]求小数的某一位
- OpenJudge_P7830 求小数的某一位
- OPJ---7830:求小数的某一位
- Noi 题库:求小数的某一位
- 求浮点的小数部分函数
- Java编程算法基础---小数循环节
- MySQL的触发器、存储过程与读写分离
- linux 下查看机器是cpu是几核的
- 每日算法(数组与字符串)
- 指针初识6(指针与多维数组)
- 第十周项目6-贪财的富翁
- 求小数的循环节
- POJ 1849 Two(遍历树)
- Java基础-将Bean属性值放入Map中
- using thymeleaf 之 th:each迭代循环
- 手写快速排序【随机数作基数】
- hdu 4771 Stealing Harry Potter's Precious(bfs+枚举)
- 中文分词实现——双向最大匹配
- 的个电饭锅
- [jbb0523整理]压缩感知中的数学知识:NP-hard问题