poj 1001 Exponentiation 第一题 高精度 乘方 难度:1(非java)
Time Limit: 500MS | Memory Limit: 10000K | |
Total Submissions: 138526 | Accepted: 33859 |
Description
This problem requires that you write a program to compute the exact value of Rn where R is a real number ( 0.0 < R < 99.999 ) and n is an integer such that 0 < n <= 25.
Input
Output
Sample Input
95.123 12
0.4321 20
5.1234 15
6.7592 9
98.999 10
1.0100 12
Sample Output
548815620517731830194541.899025343415715973535967221869852721
.00000005148554641076956121994511276767154838481760200726351203835429763013462401
43992025569.928573701266488041146654993318703707511666295476720493953024
29448126.764121021618164430206909037173276672
90429072743629540498.107596019456651774561044010001
1.126825030131969720661201
Hint
s is a string and n is an integer
C++
while(cin>>s>>n)
{
...
}
c
while(scanf("%s%d",s,&n)==2) //to see if the scanf read in as many items as you want
/*while(scanf(%s%d",s,&n)!=EOF) //this also work */
{
...
}
遥远时代的第一道题,真是怀念啊,才学C语言的我明白了高精的意义
#include<iostream>
#include <string>
using namespace std;
string multiply(string a,string d){
int remain=0,temp=0;
string ad,mul="0";
for(int i=a.length()-1;i>=0;i--){
remain=0;//余数
ad="";//每次的乘积
for(int j=d.length()-1;j>=0;j--){
temp=(a[i]&15)*(d[j]&15)+remain;
remain=temp/10;
temp%=10;
ad=(char)(temp+'0')+ad;
}
if(remain){
ad=(char)(remain+'0')+ad;
}
int x=ad.length()-1;
int y=mul.length()-(a.length()-i);
remain=0;
while(x>=0&&y>=0){//完成加和
temp=(ad[x]&15)+(mul[y]&15)+remain;
remain=temp/10;
temp%=10;
mul[y]=temp+'0';
x--;y--;
}
while(x>=0){//如果ad串更长
temp=(ad[x]&15)+remain;
remain=temp/10;
temp%=10;
mul=(char)(temp+'0')+mul;
x--;
}
while(y>=0){//如果mul串更长
temp=(mul[y]&15)+remain;
remain=temp/10;
temp%=10;
mul[y]=temp+mul[y];
y--;
}
if(remain){//如果还有余数
mul=(char)(remain+'0')+mul;
}
}
return mul;
}
int main(){
string a,d;
int n;
while(cin>>a>>n){
int pos =a.find_first_of('.');//寻找小数点位置
a.erase(pos,1);
int num=(a.length()-pos)*n;
d=a;
for(int i=1;i<n;i++){
d=multiply(d,a);
}
if(pos==a.npos){//如果没有找到,a是整数,运算不会出现点,可以直接输出
for(int i=0;i<d.length()-1;i++){
if(d[0]!='0'){break;}
d.erase(0,1);
}
cout<<d<<endl;
continue;
}
d.insert(d.length()-num,".");
for(int i=0;i<d.length();i++){//去除前导零
if(d[0]!='0')break;
d.erase(0,1);
}
for(int i=d.length()-1;i>=0;i--){//去除后置零
if(d[i]!='0')break;
d.erase(i,1);
}
if(d[d.length()-1]=='.'){//没有小数部分就不用输出.
d.erase(d.length()-1,1);
}
cout<<d<<endl;
}
return 0;
}
poj 1001 Exponentiation 第一题 高精度 乘方 难度:1(非java)的更多相关文章
- POJ 1001 Exponentiation(大数运算)
POJ 1001 Exponentiation 时限:500 ms 内存限制:10000 K 提交材料共计: 179923 接受: 43369 描述:求得数R( 0.0 < R < ...
- [POJ 1001] Exponentiation C++解题报告 JAVA解题报告
Exponentiation Time Limit: 500MS Memory Limit: 10000K Total Submissions: 126980 Accepted: 30 ...
- POJ 1001 Exponentiation 无限大数的指数乘法 题解
POJ做的非常好,本题就是要求一个无限位大的指数乘法结果. 要求基础:无限大数位相乘 额外要求:处理特殊情况的能力 -- 关键是考这个能力了. 所以本题的用例特别重要,再聪明的人也会疏忽某些用例的. ...
- POJ 1001 Exponentiation(JAVA,BigDecimal->String)
题目 计算实数a的n次方,具体输出格式看案例 import java.util.*; import java.math.*; public class Main { public static voi ...
- [POJ] #1001# Exponentiation : 大数乘法
一. 题目 Exponentiation Time Limit: 500MS Memory Limit: 10000K Total Submissions: 156373 Accepted: ...
- POJ 1001 Exponentiation
题意:求c的n次幂……要求保留所有小数…… 解法:一开始只知道有BigInteger……java大数+模拟.第一次写java大数……各种报错各种exception……ORZ 没有前导0和小数后面的补位 ...
- POJ 1001 Exponentiation 模拟小数幂
模拟小数幂 小数点位 pos 非零末位 e 长度 len 只有三种情况 pos > len pos < e e < pos < len #include <iostrea ...
- POJ 1293 网络流 第一题
完全的模板,做多了就好了吧 反向流量真的很有意思,有这样一种说法比较容易理解.”正向是+,反向就是-,其实是等价的.因为每次找到的增广路不一定是最优解里面的,所以再进行后面的操作的时候要重新选择,而反 ...
- 快速切题 sgu 111.Very simple problem 大数 开平方 难度:0 非java:1
111.Very simple problem time limit per test: 0.5 sec. memory limit per test: 4096 KB You are given n ...
随机推荐
- SparkSQL程序设计
1.创建Spark Session val spark = SparkSession.builder . master("local") .appName("spark ...
- Ubuntu16 安装Jira
参见:https://segmentfault.com/a/1190000008194333 https://www.ilanni.com/?p=12119烂泥:jira7.3/7.2安装.中文及破解 ...
- nuget发布自已的程序集
1.nuget注册并获取apikey 2.下载nuget.exe 3.设置apikey nuget setApiKey <apikey> 4.开发程序集 5.进入.csproj目录生成描述 ...
- CSS Fonts(字体)
CSS Fonts(字体) 一.serif和sans-serif字体之间的区别 注意: 在计算机屏幕上,sans-serif字体被认为是比serif字体容易阅读. 二.CSS字型 在CSS中,有两种类 ...
- 20145310 《Java程序设计》第8周学习总结
20145310 <Java程序设计>第8周学习总结 教材学习内容总结 本周主要进行第十四章和第十五章的学习. 第十四章 NIO使用频道(channel)来衔接数据节点,对数据区的标记提供 ...
- linux 第三周
linux内核目录结构 arch目录包括了所有和体系结构相关的核心代码.它下面的每一个子目录都代表一种Linux支持的体系结构,例如i386就是Intel CPU及与之相兼容体系结构的子目录.PC机一 ...
- Spring Security核心概念介绍
Spring Security是一个强大的java应用安全管理库,特别适合用作后台管理系统.这个库涉及的模块和概念有一定的复杂度,而大家平时学习Spring的时候也不会涉及:这里基于官方的参考文档,把 ...
- 访问ashx一般应用程序
浏览器中的地址栏键入要访问页面的地址:回车(是和服务器软件打交道)----向服务器发送请求(以http协议为基础,服务器按照此协议解释理解接收到的数据),服务器接收到发送的请求,根据请求信息知道当前所 ...
- [翻译]理解CSS模块方法
在这个前端发展日新月异的世界,能够找到有所影响的概念相当困难,而将其准确无误的传达,让人们愿意尝试,更是难上加难. 拿CSS来看,在我们写CSS时,工具侧最大的变化,也就是CSS处理器的使用,如:可能 ...
- Commons Configuration之一简介
转载自(https://my.oschina.net/u/2000201/blog/486327) 1 简介 Commons Configuration软件类库提供通用配置接口,使Java应用程 ...