codem2018年初赛A轮

第六题

小美创建了一套算法,第一行输入两个整数,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);
		}
    	
    }
}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值