回 帖 发 新 帖 刷新版面

主题:求解

使用数组精确计算M/N(0〈M〈N〈=100)的值。如果M/N是无限循环小数,则计算并输出他的第一个循环节,同时要求输出循环节的起止位置(小数位的序号)。

回复列表 (共5个回复)

沙发

似乎做过类似的题目!
M N 都很小,直接除就可以了
用一个数组逐位保存除出来的结果
并用一个变量保存余数
每除一次都要进行统计,看是否有重复的

板凳

个人观点:N只含有2、5为因数的直接除,其他试用n个9去除N,直到得到整数为止,然后乘以M

3 楼

int a,b;   //两个操作数;                               
int frist;//除法出来的整数部分;
int second[MAX]={0};//小数部分

{
  first=a/b;//求出整数部分;
  yushu=a%b*10;//得出余数;
  for(int i=0;i<MAX;i++)循环求位;
{
  
  cput=yushu/b;//得到一个了除法结果,放心,一定是一位的;
  yushu=yushu%b*10;//进位
  for(int j=0;j<i;j++)比较是否重复
     if(second[i]==second[j])  return;//余数重复,循环结束;
  second[i]=cput;没有重复,可以使用
}

}

4 楼

QB可以用高精度除法做,超出范围
就用一个数组把小数部分每一位
取出来,再查找,如有几个相同的
字符,就用一个DO循环,计算有多
少位,最后输出.[em13]

5 楼

3 楼的差不多吧,就是先除存起来,然后把得到的结果和以前的结果比较,如果一样就输出,不一样就不输出

我来回复

您尚未登录,请登录后再回复。点此登录或注册