算法日记(Java实现)第20160715(1)期——POJ1001/POJ1002
来源:互联网 发布:吉诺比利职业生涯数据 编辑:程序博客网 时间:2024/05/29 18:00
今日题目:POJ1001、POJ1002
(一)POJ1001
题目地址:http://poj.org/problem?id=10011.首先考虑内置类型是否能用,显然不能用。发现内置double类型最多能保证小数点后15位精度,第16位将会有问题。
2.上网查找到与BigInteger类型类似的BigDecimal类型。该类可保存任意精度的实数,并可表示成指数形式、非指数形式。
3.主要出现的问题是忽略了题干中的“结尾不能出现零”。受内置double类型的影响,忽略了BigDecimal的运算不会将末位的0丢弃。调用其内置的stripTrailingZeros函数完美解决此问题。
源代码如下:
import java.math.BigDecimal;import java.util.Scanner;//POJ 1001/*Date: 2016.07.15 * 1st: Wrong Answer * 2nd: Wrong Answer * 3rd: Wrong Answer * 4th: Accepted */public class Main {public static void main(String[] args) {Scanner sc = new Scanner(System.in);while (sc.hasNext()) {BigDecimal t = sc.nextBigDecimal();int ti = sc.nextInt();String ts = t.pow(ti).toPlainString();if (ts.charAt(0) == '0' && ts.charAt(1) == '.')ts = ts.substring(1);System.out.println(ts);}}}(二)POJ1002
题目地址:http://poj.org/problem?id=10021.思路较为简单,就是读入字符串,将字符串的每个字符逐一操作、转换。然后进行排序、查重。2.主要问题是在读入字符串的时候,如果采用sc.next()则最后一个输入被抛弃,提示用户再读入一个字符串,当输入一个新字符串后,那个被抛弃的字符串被“找回”。若采用sc.nextLine(),则第一个输入读入的是换行符。3.上述问题浪费较多的时间(包括上一题也是)。后来发现是在复制示例输入数据的时候,由于最后一行没有换行符,导致输入时就会出现输入格式问题。不过在此期间,却弄懂了next,nextLine的区别,并对相关输入流有了更清晰的认识。弄懂了所谓分隔符的意义、用法。源代码如下:import java.util.Arrays;import java.util.Scanner;//POJ 1002/*Date: 2016.07.15 * 1st:Wrong Answermissing "No duplicates." * 2nd:Wrong Answermissing Hyphens * 3rd:Wrong AnswerOne less output * 4th: Accepted */public class Main {public static void main(String[] args) {Scanner sc = new Scanner(System.in);int n = sc.nextInt();String []sa = new String[n];for(int i = 0; i < n; i++){StringBuilder ts = new StringBuilder(sc.next());//to phone numberStringBuilder ss = new StringBuilder();for(int j = 0; j < ts.length(); j++){char ch = ts.charAt(j);if(ch == '-')continue;int ti = ch - 'A';//it's a numberif(ti < 0)ss.append(ch);else if(ti <= 2){ss.append(2);}else if(ti <= 5){ss.append(3);}else if(ti <= 8){ss.append(4);}else if(ti <= 11){ss.append(5);}else if(ti <= 14){ss.append(6);}else if(ti <= 18){ss.append(7);}else if(ti <= 21){ss.append(8);}else if(ti <= 24){ss.append(9);}}//to sort the arrays (String array can use Arrays.sort, but StringBuilder cannot)sa[i] = ss.toString();}Arrays.sort(sa);boolean flag = false;for(int i = 0; i < n; i++){int times = 1;for(int j = i + 1; j < n; j++){if(!sa[j].equals(sa[i]))break;times++;i++;}if(times != 1){System.out.println(sa[i].substring(0, 3) + "-" + sa[i].substring(3, 7) + " " + times);flag = true;}}if(!flag){System.out.println("No duplicates. ");}}}
0 0
- 算法日记(Java实现)第20160715(1)期——POJ1001/POJ1002
- 算法日记(Java实现)第20160716(2)期——POJ1003/POJ1004
- 算法日记(Java实现)第20160717(3)期——POJ1005/POJ1006
- 算法日记(Java实现)第20160718(4)期——POJ1007
- 算法日记(Java实现)第20160719(5)期——POJ1008
- 算法日记(Java实现)第20160904(6)期——CCF俄罗斯方块
- 算法日记(Java实现)第20170308(7)期——POJ1222
- poj1001 Exponentiation(JAVA实现)
- POJ1001(JAVA高精度幂)
- poj1001(java 大数处理)
- poj1002的java实现
- POJ1002 java代码实现
- poj1001的java实现
- 高精度算法简单说明(poj1001)
- poj1002(map水题 )
- poj1001——Exponentiation
- poj1001(高精度)
- poj1001(大数据)
- OrCAD:添加footprint属性图文教程
- yum 安装时错误 Errno 14 Couldn't resolve host 解决办法
- Android照片墙完整版,完美结合LruCache和DiskLruCache
- Codeforces 689A. Mike and Cellphone(模拟)
- Fragment抛出java.lang.IllegalStateException: Fragment not attached to Activity
- 算法日记(Java实现)第20160715(1)期——POJ1001/POJ1002
- Dependencies for Windows + Android
- JAVA Servlet
- dynamic - How to angular 2 dynamic tabs with user click chosen components
- 通过 PS 指令获得指定进程名称的 PID
- 百度地图的注意事项
- RTF文件结构分析及其应用
- iCheck对于radio选定和取消选定
- JVM Server与Client运行模式