牛客网真题2019-36-a/b

a/b

http://www.nowcoder.com/questionTerminal/1df03f0989a1494fa2acfcbd43496ffd

通过余数判断是否是无限循环小数,我用set集合来判断。参考其他大佬的解法,用HashMap更好,value记录第几位小数,通过动态数组arraylist直接找出循环节。

import java.util.*;

public class Main {
    public static void main(String[] args){

        Scanner scanner = new Scanner(System.in);
        int a = scanner.nextInt();
        int b = scanner.nextInt();
        if(a % b == 0){
            System.out.println(a / b);
        }else{
            Set<Integer> set = new HashSet<>();
            ArrayList<Integer> arrayList = new ArrayList<>();
            arrayList.add(a / b);
            int p = a % b;
            boolean flag = false;
            while (p != 0) {
                if(!set.contains(p)){
                    set.add(p);
                    arrayList.add((p * 10) / b);
                    p = (p * 10) % b;
                }else{
                    flag = true;
                    break;
                }
            }
            if(flag){
                String res = a / b + ".";
                int q = a % b;
                while (q != p) {
                    res += (q * 10) / b;
                    q = (q * 10) % b;
                }
                res += "(";
                res += (q * 10) / b;
                q = (q * 10) % b;
                while (q != p) {
                    res += (q * 10) / b;
                    q = (q * 10) % b;
                }
                res += ")";
                System.out.println(res);
            }else{
                StringBuilder res = new StringBuilder(arrayList.get(0) + ".");
                for(int i = 1; i < arrayList.size(); i++){
                    res.append(arrayList.get(i));
                }
                System.out.println(res.toString());
            }
        }

    }
}
全部评论

相关推荐

2025-12-28 20:47
已编辑
北京工商大学 Java
程序员牛肉:我靠你这个实习经历其实最需要担心的点是你做的太多了,可能会被面试官怀疑是你伪造的。 交易状态机是你做的,支付多渠道是你做的,对账是你做的,结算还是你做的,重复支付也是你做的,整个服务的异常处理也是你做的。 其实你这个反而问题很大的,你想想站在面试官的角度,他是真的会相信你的能力很强,还是相信这份实习你伪造了大部分?我相信你真的做了这么多,但是删一些,废话删一删。你这个做的太多了反而真实性不可信。 后面再补一个项目,在github上找一个高star的项目学一学然后写到自己简历上。我觉得你能力肯定没问题。28届能做到这个份上很厉害,但是在求职市场中,你不是在跟28届的同学比,把你这个简历放到27届其实也就一般水平。 所以后续要想一想看看能不能给自己简历上搞点亮点,比如开源贡献呢?比如博客呢?
实习要如何选择和准备?
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务