在Oj上遇到有大数运算的题目,用Java水过最好不过了,这个题目如果是用C++来实现的话,可能会复杂许多。所以建议搞ACM的同学可能稍微的学习一下Java,只要掌握简单的东西就好了。不需要多么深入,至少要会Java大数的运算。
关于这道题目我就直接因为用Java做比较简单,所以我就直接贴代码了。
题意:输入实数a,整数n,求a的n次方,去掉后缀0,如果结果小于1,去掉前0,也就是说第一位变成小数点而不是0了
1 2 3 4 5 6 7 8 9 10 11 12 13 | import java.math.*; import java.util.*; public class Main{ public static void main(String[] args){ Scanner in=new Scanner(System.in); while(in.hasNext()){ BigDecimal val=in.nextBigDecimal(); int n=in.nextInt(); BigDecimal ret=val.pow(n).stripTrailingZeros(); System.out.println( ret.toPlainString().replaceAll("^0", "") ); } } } |
除非注明,饮水思源博客文章均为原创,转载请以链接形式标明本文地址