题意:求c的n次幂……要求保留所有小数……

解法:一开始只知道有BigInteger……java大数+模拟。第一次写java大数……各种报错各种exception……ORZ

没有前导0和小数后面的补位0,整数的话不输出小数点,wa点就这些···被整数后面的小数点坑死了···

代码:

放渣代码……

import java.math.BigInteger;
import java.util.Scanner; public class Main
{
public static void main(String args[])
{
Scanner cin = new Scanner(System.in);
while(cin.hasNext())
{
String s;
int n;
s = cin.next();
n = cin.nextInt();
String s1 = "";
int len = s.length();
int x = -1;
for(int i = 0; i < len; i++)
{
if(s.charAt(i) != '.')
s1 += s.charAt(i);
else
x = i;
}//去掉输入中的小数点,并记录小数点出现在第几位
BigInteger ans = new BigInteger(s1);
ans = ans.pow(n);//计算去小数点后的整数的n次幂
if(x == -1)//如果没出现小数点说明输入是整数
System.out.println(ans);
else
{
x = 5 - x;//计算小数点后有几位
x *= n;//计算积的小数点后有几位
boolean flag = false;
String s2 = ans.toString();
len = s2.length();
String res = "";
for(int i = len - 1, j = 0; (i >= 0) || (j < x); i--, j++)补小数点并去掉多余的0
{
if(i < 0)
res += '0';
else
{
if(s2.charAt(i) == '0')
{
if(flag)
res += s2.charAt(i);
}
else
{
res += s2.charAt(i);
flag = true;
}
}
if(j + 1 == x)
{
if(flag)
res += '.';
flag = true;
}
}
flag = false;
len = res.length();
for(int i = len - 1; i >= 0; i--)
{
if(res.charAt(i) == '0')//去前导0
{
if(flag)
System.out.print(res.charAt(i));
}
else
{
System.out.print(res.charAt(i));
flag = true;
}
}
System.out.println("");
}
}
}
}

后来!有人告诉我还有BigDecimal!直接哭晕在厕所!

代码:

import java.math.*;
import java.util.*; public class Main
{
public static void main(String args[])
{
Scanner cin = new Scanner(System.in);
BigDecimal ans;
int n;
while(cin.hasNext())
{
ans = cin.nextBigDecimal();
n = cin.nextInt();
ans = ans.pow(n);
String res = ans.stripTrailingZeros().toPlainString();
if(res.charAt(0) != '0')
System.out.print(res.charAt(0));
int len = res.length();
for(int i = 1; i < len; i++)
System.out.print(res.charAt(i));
System.out.println();
}
}
}

嗯~一开始输出发现有的小数变成了科学计数法~学到两个函数

BigDecimal.stripTrailingZeros()去掉后面多余的0

BigDecimal.toPlainString()用来展开科学计数法

POJ 1001 Exponentiation的更多相关文章

  1. POJ 1001 Exponentiation(大数运算)

    POJ 1001 Exponentiation 时限:500 ms   内存限制:10000 K 提交材料共计: 179923   接受: 43369 描述:求得数R( 0.0 < R < ...

  2. [POJ 1001] Exponentiation C++解题报告 JAVA解题报告

        Exponentiation Time Limit: 500MS   Memory Limit: 10000K Total Submissions: 126980   Accepted: 30 ...

  3. POJ 1001 Exponentiation 无限大数的指数乘法 题解

    POJ做的非常好,本题就是要求一个无限位大的指数乘法结果. 要求基础:无限大数位相乘 额外要求:处理特殊情况的能力 -- 关键是考这个能力了. 所以本题的用例特别重要,再聪明的人也会疏忽某些用例的. ...

  4. [POJ] #1001# Exponentiation : 大数乘法

    一. 题目 Exponentiation Time Limit: 500MS   Memory Limit: 10000K Total Submissions: 156373   Accepted: ...

  5. poj 1001 Exponentiation 第一题 高精度 乘方 难度:1(非java)

    Exponentiation Time Limit: 500MS   Memory Limit: 10000K Total Submissions: 138526   Accepted: 33859 ...

  6. POJ 1001 Exponentiation(JAVA,BigDecimal->String)

    题目 计算实数a的n次方,具体输出格式看案例 import java.util.*; import java.math.*; public class Main { public static voi ...

  7. POJ 1001 Exponentiation 模拟小数幂

    模拟小数幂 小数点位 pos 非零末位 e 长度 len 只有三种情况 pos > len pos < e e < pos < len #include <iostrea ...

  8. Poj 1001 / OpenJudge 2951 Exponentiation

    1.链接地址: http://poj.org/problem?id=1001 http://bailian.openjudge.cn/practice/2951 2.题目: Exponentiatio ...

  9. 【POJ 1001】Exponentiation (高精度乘法+快速幂)

    BUPT2017 wintertraining(15) #6A 题意 求\(R^n\) ( 0.0 < R < 99.999 )(0 < n <= 25) 题解 将R用字符串读 ...

随机推荐

  1. MVC5+EF6+BootStrap3.3.5 博客系统之EF(一)

  2. [转]控制反转(IOC)和依赖注入(DI)

    http://blog.csdn.net/Elite_1989/article/details/16851565 控制反转和依赖注入可以理解成同一个东西,都是为解耦而生的~ 控制反转(IoC=Inve ...

  3. localStorage 便签功能实现

    之前利用localStorage写过手机便签应用,因为蛋疼的换了台三星的屌丝级手机,木 有了测试的工具,没能继续优化维护下去.而在网页上实现便签功能目前来说似乎没有太大 的意义,因为不论是 Firef ...

  4. 【高斯消元】BZOJ 1013: [JSOI2008]球形空间产生器sphere

    Description 有一个球形空间产生器能够在n维空间中产生一个坚硬的球体.现在,你被困在了这个n维球体中,你只知道球面上n+1个点的坐标,你需要以最快的速度确定这个n维球体的球心坐标,以便于摧毁 ...

  5. Spring.net Could not load type from string value问题解决办法

    Spring.net Could not load type from string value "xxx" 错误原因可能有: 1.spring.net配置错误,注意要区别配置文件 ...

  6. WPF 视图分组排序

    视图分组排序 效果: 实现步骤: 第一步:为分组做一个标题头,就是效果图中的浅蓝色部分: <DataGrid.GroupStyle>标签部分: <DataGrid x:Name=&q ...

  7. ACM题集以及各种总结大全!

    ACM题集以及各种总结大全! 虽然退役了,但是整理一下,供小弟小妹们以后切题方便一些,但由于近来考试太多,顾退役总结延迟一段时间再写!先写一下各种分类和题集,欢迎各位大牛路过指正. 一.ACM入门 关 ...

  8. eclipse进行开发

    最近在用eclipse进行开发的时候遇到了一个很奇怪的问题,其实这个问题很早以前就遇到了只是苦于一直没有需找到答案.直到今天又遇到了,才觉得这真是个很实用很使用的功能,所以分享给大家,希望对大家有帮助 ...

  9. gcc,g++,extern “C” :一些编译错误的缘由

    正好是我们代码中遇到的问题,之前不求甚解,只用g++编译没有错误就不管了,现在要跨平台到windows下就遇到了问题.全文转载自:http://user.qzone.qq.com/75172588/b ...

  10. POJ 2193 Lenny's Lucky Lotto Lists (DP)

    题目链接 题意 : 给你两个数N和M,让你从1到M中找N个数组成一个序列,这个序列需要满足的条件是后一个数要大于前一个数的两倍,问这样的序列有多少,输出. 思路 : dp[i][j]代表着长度为 i ...