在POJ上找了几道高精度的题目来练手,不得不说,高精度的题,用java来实现真的非常简单暴力,直接算就行,没有很强的逻辑~
这道题目的意思呢,是给你一个实数R和一个整数n,然后求R的n次方,原本这道题目是很简单的,主要有一点麻烦的就是细节的处理上,不过好在测试用例都给了,应该注意的点。eg,第二个测试用例如果答案是0.00000xxxxxxx,那么要输出.00000xxxxxxx,这样的格式,还有最后一个测试用例,对于结果后面有一堆0的,要去掉后面这些0.
不过有点遗憾的是,自己写了一个for循环遍历,从后向前找第一个不为0的数,然后结果值就等于他从0到这个不为0的数的下标,但是今天看BigDecimal的时候突然发现了,人家自带一个去除末尾的0的方法,呜呜呜API万岁! 这个伟大的方法就是stripTrailingZeros()
这是不用stripTrailingZeros()方法的
这是用方法做的
以上可知,用好方法真的很重要啊!!!
这个题目呢,读懂题目也是非常简单的,但是我刚开始没读懂,
感觉他给的这句话也很奇怪,但是经过我认真研读了两遍之后发现她给的7/8正是0.75小数点后的一位,5/64正是小数点后的第二位,而8和64,分别是8的1次方和8的2次方,所以现在就很清楚了,让我们求给的八进制的小数点后的第几位除以8的几次方,然后将和相加。
也没有什么需要注意的问题,代码逻辑很简单。
最后一个素数的问题,这个题目呢,是给定一个素数K和一个整数L,他是由两个素数相乘得到的,如果他的两个素数因子都大于L,那么输出“GOOD”,若有一个素数因子小于L,则输出“BAD p”,p是最小的素数因子。
思路是这个借鉴的是某位大佬的先打表,一个数是不是素数,先给他标记出来,遍历的时候直接用就可以了~
总体来说呢,高精度的题目在省ACM中呢,算是签到题,然后我们做的时候注意好细节就可以了~