主题:求解
exe85611
[专家分:0] 发布于 2005-06-29 14:25:00
使用数组精确计算M/N(0〈M〈N〈=100)的值。如果M/N是无限循环小数,则计算并输出他的第一个循环节,同时要求输出循环节的起止位置(小数位的序号)。
回复列表 (共5个回复)
沙发
CFreely [专家分:870] 发布于 2005-06-30 09:20:00
似乎做过类似的题目!
M N 都很小,直接除就可以了
用一个数组逐位保存除出来的结果
并用一个变量保存余数
每除一次都要进行统计,看是否有重复的
板凳
hadewood [专家分:60] 发布于 2005-06-30 09:46:00
个人观点:N只含有2、5为因数的直接除,其他试用n个9去除N,直到得到整数为止,然后乘以M
3 楼
00beiyan [专家分:960] 发布于 2005-07-05 00:32:00
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 楼
编程黑客 [专家分:1660] 发布于 2005-07-06 21:52:00
QB可以用高精度除法做,超出范围
就用一个数组把小数部分每一位
取出来,再查找,如有几个相同的
字符,就用一个DO循环,计算有多
少位,最后输出.[em13]
5 楼
davidw017 [专家分:4170] 发布于 2005-07-07 15:48:00
3 楼的差不多吧,就是先除存起来,然后把得到的结果和以前的结果比较,如果一样就输出,不一样就不输出
我来回复