您的位置:首页 > 其它

欢迎使用CSDN-markdown编辑器

2016-07-27 16:49 405 查看
1.求无限循环小数的循环节,例如1/7=0.14285714285714285,则循环节为142857 拿到这道题目第一想法就是当作普通字符串来处理,依次截取前面部分与后面部分进行比较,直到找到重复的,则重复部分为循环节。

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

/**
* Created by hzxuhui1 on 2016/7/27.
*/
public class xunhuan {
public static boolean canZhengChu(int num1,int num2){
if(num1 % num2 == 0){
return  true;
}
else {
return  false;
}}

public static String findString(int num1,int num2){
ArrayList<Integer> yushu = new ArrayList<Integer>();
ArrayList<Integer> shang = new ArrayList<Integer>();
//异常情况及整除
if(num1 < 0 || num2 <= 0 || canZhengChu(num1,num2)){
return  null;
}

int shangshu = num1/num2;
shang.add(shangshu);
int left= num1 % num2;

//yushu中不含有当前余数
while( !yushu.contains(left) ){

yushu.add(left);
left = left * 10;
int shangshu2 =left/num2;
shang.add(shangshu2);
left = left % num2;
if(left == 0)
return  null;
}

int begin = yushu.indexOf(left)+1;
List<Integer> temp = shang.subList(begin,shang.size());
StringBuilder sb = new StringBuilder();
for(int i = 0; i < temp.size() ; i++)
{sb.append(temp.get(i));}
System.out.println(sb.toString());
return  sb.toString();
}

public static void main(String args[]){
Scanner scan = new Scanner(System.in);
while(scan.hasNext()){
String[] num = scan.nextLine().split(",");
int num1 = Integer.parseInt(num[0]);
int num2 = Integer.parseInt(num[1]);
findString(num1,num2);
}
scan.close();
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: