设为首页 加入收藏

TOP

求两整数相除的精确值
2014-11-24 01:40:39 来源: 作者: 【 】 浏览:7
Tags:两整数 相除的 精确

题目(斯伦贝谢 slb 09 校园招聘试题):
给定两个整数M和N,满足0 < M < N < 100。现在要求求出来M/N的精确值,也就是说,如果能够整除,那么需要得到结果;如果不能整除,那么要求是得到小数点后面到第一个循环节结束的地方, 并且指出循环节从小数点后第几位开始,小数点后第几位结束。


答案:


初始化:
index = 1;
A[i] = 0; //(i=0,…99)
B[i] = 0; //(i=0,…99)
int begin = 0;
int end = 0;


然后:
while(M != 0) {
if(B[M] != 0) {
begin = B[M];
end = index;
break;
}
B[M] = index;
A[index] = M*10/N;
M = M*10 % N;
index++;
}


然后输出结果就OK了。


举个例子:4/7
编号 余数 当前位
0. 4 0.(初始,个位数是0,后面开始小数点之后的)
1. 5 5(40/7 = 5; 40%7 = 5,此时B[4]=1, A[1]=5)
2. 1 7(B[1]=2, A[2]=7)
3. 3 1(B[3]=3, A[3]=1)
4. 2 4(B[2]=4, A[4]=4)
5. 6 2(B[6]=5, A[5]=2)
6. 4 8(到这儿循环结束,因为4在编号为0的那一行出现了,当前B[4]=1而不是0,这时候begin=1, end=6,循环节的长度是6)


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇高级Java、数据库开发工程师面试题 下一篇Java中级开发工程师笔试试卷

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: