codem2018年初赛A轮

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/liuxw1/article/details/80637001

第六题

小美创建了一套算法,第一行输入两个整数,a和b,第二行输入一个字符串c。

假如a/b的小数部分中包含第三个输入的数c,则输出c在小数部分出现的位置k,

如果不包含,则输出-1

注:

  •     a/b如果是无限不循环小数,后边补上无数个0
  •     k从小数部分第一个开始数


例如:

输入

    1 2

    5000000000000000

输出

    1



import java.math.BigDecimal; 
import java.util.*;
public class Main {
	/**
	 * 
	 * have a good day liuxw
	 * @param args
	 */
    public static void main(String[] args) {
    	try {
    		//定义一个list用来收集两个BigDecimal
    		List<BigDecimal> list = new ArrayList<BigDecimal>();
            int x = 0;
            Scanner sc = new Scanner(System.in);
            for(int i = 0; i < 2; i++){
                x = sc.nextInt();
                if(x>=1&&x<=1000000000) {
                	 list.add(new BigDecimal(x));
                }
            } 
            if(list!=null) {
            	/**
            	 * @param1 除数
            	 * @param2 小数位数
            	 * @param3 舍取的方式
            	 */
            	//用来计算a/b,由于要接受到a/b的全部小数部分,所以中间的参数设置成Integer.MAX_VALUE,但是为了运行快一点,设成了65536
            	BigDecimal divide = list.get(0).divide(list.get(1),65536,BigDecimal.ROUND_HALF_DOWN);
            	String s = sc.next();
            	//用来计算输入的第三个字符串在小数部分的位置,先把结果转换成String格式的字符串
            	if(-1==divide.toString().indexOf(s)) {
            		System.out.println(-1);
            	}else {
            		//由于是从1开始数,所以减一
            		System.out.println(divide.toString().indexOf(s)-1);
            	}
            }else {
            	System.out.println(-1);
            }
    	}catch (Exception e) {
			System.out.println(-1);
		}
    	
    }
}



猜你喜欢

转载自blog.csdn.net/liuxw1/article/details/80637001