zoukankan      html  css  js  c++  java
  • b_nk_a/b(map记录循环节初始时的位置)

    求a/b的小数表现形式。如果a可以整除b则不需要小数点。如果是有限小数,则可以直接输出。如果是无限循环小数,则需要把小数循环的部分用"()"括起来。

    void run() {
    	Scanner sc = new Scanner(new BufferedInputStream(System.in));
    	final int a = sc.nextInt(), b = sc.nextInt();
    	int i = a / b;
    	int j = a % b;
    	StringBuilder ans = new StringBuilder();
    	ans.append(i);
    	if (j > 0) {
    		ans.append(".");
    		//map记录循环节的开始部分在ans中的位置,方便插入")"
    		Map<Integer, Integer> map = new HashMap<>();
    		while (j > 0) {
    			j *= 10;
    			//被除数再次出现就代表商出现循环节
    			if (map.containsKey(j)) {
    				ans.insert(map.get(j), "(");
    				ans.append(")");
    				break;
    			}
    			map.put(j, ans.length());
    			ans.append(j / b);
    			j %= b;
    		}
    	}
    	System.out.println(ans);
    }
    
  • 相关阅读:
    jquery02
    jquery01
    oracle04_plsql
    oracle03
    oracle02
    oracle01
    selenium
    爬取京东商品信息并保存到MongoDB
    python pymongo操作之增删改查
    MongoDB 数据库表删除
  • 原文地址:https://www.cnblogs.com/wdt1/p/15357875.html
Copyright © 2011-2022 走看看