poj 1001题
OUTPUT:
输入值为 R n
输出值为 R^n的具体数值
这个题在网上看见了一个很神奇的java代码,很清新,而且抱着试一试的心态通过了poj的text1
2
3
4
5
6
7
8
9
10
11
12
13import 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", "") );
}
}
}
其中toPlanString(),返回不带指数字段的字符串,replaceAll(“^0”,””),。这篇文章的作者有很强编程能力,现在用C语言去完成这个高精度计算。
1 |
|
关于大数运算,某朋友给我提供了一个代码,不过在我阅读代码后没有发现有小数位的计算。1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29string strMultiply(string str1 , string str2)
{
string strResult = "";
int len1 = str1.length();
int len2 = str2.length();
int num[500] = {0};
int i = 0, j = 0;
for(i = 0; i < len1; i++)
{
for(j = 0; j < len2; j++)
{
num[len1-1 - i + len2-1 - j] += (str1[i] - '0')*(str2[j] - '0');
}
}
for(i = 0; i < len1 + len2; i++)
{
num[i+1] += num[i] / 10;
num[i] = num[i] % 10;
}
for(i = len1 + len2 - 1; i >= 0 ; i--)
{
if(0 != num[i]) break;
}
for(j = i; j >= 0; j--)
{
strResult += num[j] + '0';
}
return strResult;
}