版权声明:本文为博主原创文章,未经博主允许不得转载。 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);
}
}
}