欢迎使用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(); } }
相关文章推荐
- 组合模式
- 针对sql错误:“除非另外还指定了 TOP 或 FOR XML,否则,ORDER BY 子句在视图、内联函数、派生表、子查询和公用表表达式中无效”的原理与解决
- MyEclipse+Tomcat+MAVEN+SVN项目完整环境搭建
- PyGobject(二十六)布局容器之Popover
- Wireless工具移植之openssl版本导致wifi连接失败的问题
- POJ 1236 tarjan+缩点
- 160726、jQuery常用操作
- C# 求两个线段之间的夹角
- 7.26作业
- MySQL集群系列1:2台机器搭建双主集群
- Collection集合详解
- android 6.0之后 android.permission.SYSTEM_ALERT_WINDOW使用方法变动
- android 视频录制 保存到本地
- C语言合并数组
- R语言中生成虚拟变量/哑变量
- 第一天
- 从苏宁电器到卡巴斯基第20篇:曲折考研路(补)
- Android基本认识
- [linux] 替换字符串
- Sass中的Map 详解