分数——解题报告
2013-04-25 20:22
381 查看
题目描述
写出一个程序,接受一个以N/D的形式输入的分数,其中N为分子,D为分母,输出它的小数形式。
本题中,0≤N≤65535,0<D≤65535,设运算结果小数点后最多保留100位。
输入描述
分别输入ND
输出描述
如果它的小数形式存在循环,则要将其循环节用括号括起来。例如:
1/3=0.(3)
解题报告:
这题难点就是怎么判断循环,可以用一个list将所有的余数存起来,当出现相同余数的时候,即可判断为发生循环,然后将其输出即可。
代码如下:
写出一个程序,接受一个以N/D的形式输入的分数,其中N为分子,D为分母,输出它的小数形式。
本题中,0≤N≤65535,0<D≤65535,设运算结果小数点后最多保留100位。
输入描述
分别输入ND
输出描述
如果它的小数形式存在循环,则要将其循环节用括号括起来。例如:
1/3=0.(3)
解题报告:
这题难点就是怎么判断循环,可以用一个list将所有的余数存起来,当出现相同余数的时候,即可判断为发生循环,然后将其输出即可。
代码如下:
import java.util.ArrayList; import java.util.HashSet; import java.util.List; import java.util.Scanner; import java.util.Set; public class N07Fraction { public static void main(String[] args) { Scanner sc = new Scanner(System.in); Set<Integer> set = new HashSet<Integer>(); int m=sc.nextInt(); int n=sc.nextInt(); List<String> result=new ArrayList<String>(); List<Integer> remainder = new ArrayList<Integer>(); int firstBarrow=0; int temp; while(true){ if(m/n==0){ if(firstBarrow==0){ result.add("0"); remainder.add(-2); set.add(-2); }else{ result.add("0"); remainder.add(m); set.add(m); } m*=10; firstBarrow++; if(firstBarrow==1){ result.add("."); remainder.add(-1); } }else{ temp=m/n; m=m%n; if(set.contains(m)){ result.add(")"); int loopIndex=findIndex(remainder,m); if(loopIndex>0){ result.set(loopIndex, "("+temp); } break; } if(m==0){ result.add(new Integer(temp).toString()); break; } if(firstBarrow==0){ set.add(-2); result.add(new Integer(temp).toString()); remainder.add(-2); }else{ set.add(m); result.add(new Integer(temp).toString()); remainder.add(m); } if(firstBarrow!=0){ m=m*10; } } } for(String list:result){ System.out.print(list); } } private static int findIndex(List<Integer> remainder, int m) { for(int i=0;i<remainder.size();i++){ if(m==remainder.get(i)){ return i; } } return -1; } }
相关文章推荐
- 习题2-5 分数化小数 解题报告
- 带分数——解题报告
- 带分数 解题报告
- LuoguP1572 计算分数 解题报告【模拟】
- pku 3621 01分数规划 sightseeing cows 解题报告
- cqyz#p1123分数问题·解题报告
- POJ 3101 Astronomy 解题报告(大数乘法+分数最小公倍数)
- [CODEVS1225]埃及分数解题报告
- hdu 1879 继续畅通工程 解题报告
- POJ 1739 Tony's Tour 解题报告(插头DP)
- POJ 1113 解题报告
- 解题报告 之 HDU 4089 Activation
- poj(百练) 2975 解题报告
- hdu1018 Big Number 解题报告
- HDU 4778 Gems Fight! 解题报告
- LeetCode: Path Sum 解题报告
- leetcode [Nim game解题报告]
- 分治算法练习题 病毒分裂(重庆一中高2018级信息学竞赛测验6) 解题报告
- [解题报告]POJ2352 Stars 树状数组
- poj 3304解题报告