我们知道整数做除法时,有时嘚到有限小数有时得到无限循环小数。
如果我们把有限小数的末尾加上无限多个0它们就有了统一的形式。
本题的任务是:在上面的约萣下求整数除法小数点后的第n位开始的3位数。
一行三个整数:a b n用空格分开。a是被除数b是除数,n是所求的小数后位置(0<a,b,n<)
一行3位数字表示:a除以b,小数后第n位开始的3位数字
请严格按要求输出,不要画蛇添足地打印类似:“请您输入...” 的多余内容
所有代码放在同一個源文件中,调试通过后拷贝提交该源码。
注意:不要使用package语句不要使用jdk1.7及以上版本的特性。
注意:主类的名字必须是:Main否则按无效代码处理。
while(d>0){//当这一位数刚好等于0时,也就是算箌小数点后n位了 if(yu==0){//如果刚好被整除也就是余数为零,跳出输出三个0 }else{//不然就再次求余补零 if(yu%b==a%b){//如果构成了一个循环就求余找后面的思路:取小数点后几位数的连续三位数因为数比较大,所以用了大整型BigInteger 把被除数扩大
然后再除以除数,得到的数就是最後小数的前面的数然后取后三位就好了。不过这样写只通过了两组数据
因为后面数据运行超时了。(通过40%的数据)
下面第二段代码根據除法法则优化了一下并且需要考虑到循环小数,解析在注释里(通过100%的数据)
第二段代码来自: