链接:http://bailian.openjudge.cn/practice/1001/

思路

乍一看是很简单的题目,但是答案必须高精度输出,因此需要手动实现一个高精度运算方法。如果直接使用int,然后循环乘,结果很容易就会超出int的最大值。因此正确的思路是通过一个数组来保存答案,然后按照数组内容输出。我使用了一个vector容器来保存结果,将每次乘法的结果从个位数往上保存(即逆序)。

这一题需要注意的坑是:

  • 需要去掉首尾多余的0;
  • 不能去除太多的0。

这里我直接放我的代码,可以参考一下:

#include <iostream>
#include <vector>
using namespace std;
vector<short> multiply(vector<short> const &R_0, vector<short> const &R){
vector<short> ans;
int cf = 0;
for(int i = 0; i < R.size(); i++){
for(int j = 0; j < R_0.size(); j++){
int mul = cf + R[i] * R_0[j];
cf = mul / 10;
mul %= 10;
if(ans.size() <= i + j){
ans.push_back(mul);
}
else{
cf += (ans[i + j] + mul) / 10;
ans[i + j] = (ans[i + j] + mul) % 10;
}
}
if(cf) {
ans.push_back(cf);
cf = 0;
}
}
return ans;
};
int main() {
int const len = 6;
string s;
int n;
while(cin >> s >> n){
int dec = 0;
vector<short> R;
vector<short> R_0;
R_0.push_back(1);
for(int i = len - 1; i >= 0; i--){
if(s[i] == '.'){
dec = len - 1 - i;
}
else{
R.push_back(short(s[i] - '0'));
}
}
dec *= n;
for(int i = 0; i < n; i++){
R_0 = multiply(R_0, R);
}
int tail = 0;
while(R_0[tail] == 0)
tail ++;
int i = R_0.size()-1;
while(R_0[i] == 0 && i > dec-1) i--;
for(; i >= tail || i > dec-1; i--){
if(i == dec-1)
cout << ".";
cout << R_0[i];
}
cout << endl;
}
return 0;
}

推荐用例

除了页面上的几个用例可以测试外,可以用以下用例判断程序是否错误:

130.00 12

期望结果:

23298085122481000000000000

百炼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. 百炼OJ - 1001 - Exponentiation

    题目链接 哇一遍AC的感觉也太爽了吧:) #include <stdio.h> #include <string.h> int times=0; char *myCalc(ch ...

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

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

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

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

  6. 1001. Exponentiation高精度运算总结

    解题思路 这道题属于高精度乘法运算,要求输入一个实数R一个指数N,求实数R的N次方,由于R有5个数位,而N又特别大,因此用C++自带的数据类型放不下. 解题思路是通过数组储存每次乘积结果和底数的每一位 ...

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

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

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

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

  9. POJ 1001 Exponentiation

    题意:求c的n次幂……要求保留所有小数…… 解法:一开始只知道有BigInteger……java大数+模拟.第一次写java大数……各种报错各种exception……ORZ 没有前导0和小数后面的补位 ...

随机推荐

  1. MySQL出现Waiting for table metadata lock的场景浅析

    MySQL版本为5.6.12. 在进行alter table操作时,有时会出现Waiting for table metadata lock的等待场景.而且,一旦alter table TableA的 ...

  2. opengl 实体和网格绘图函数(基础)(转)

    http://blog.csdn.net/he_wen_jian/article/details/8594880 GLUT工具箱提供几种图形3维图形的函数: void glutWireSphere(G ...

  3. 一段刚刚出炉的CSV文件转换为DataTable对象的代码

    CSV是以文本形式保存的表格数据,具体是每列数据使用逗号分割,每行数据使用CRLF(\r\n)来结尾,如果数据值包含逗号或CRLF则使用双引号将数值包裹,如果数据值包含双引号则使用两个双引号做为转义. ...

  4. PyQt5--QLineEdit

    # -*- coding:utf-8 -*- ''' Created on Sep 20, 2018 @author: SaShuangYiBing Comment: ''' import sys f ...

  5. node学习笔记_02 API详解

    一.知识点:url.parse方法 方法说明: 讲一个URL字符串转换成对象并返回. 语法:url.parse(urlStr, [parseQueryString], [slashesDenoteHo ...

  6. Vuex状态管理详解

    什么是Vuex 专门为vue应用程序开发的状态管理模式,采用集中式存储管理应用的所有组件的状态(数据),以相应的规则保证状态以一种可预测的方式发生改变 Vuex的作用(什么样的情况下使用Vuex) 多 ...

  7. An Introduction to Protocol Oriented Programming in Swift

    swift面向协议编程的根本原因在于值类型的存在:面向对象必须要有引用类型的支持: Protocol Oriented approach was introduced to resolve some ...

  8. cocos2d-x2.2.3 Layer分析

    <pre name="code" class="cpp">Layer CCLayerColor: 能够改变Layer的背景,能够设置大小 CCLay ...

  9. Nowcoder 提高组练习赛-R1

    https://www.nowcoder.com/acm/contest/172#question 单人报名300元,五人合报免费,于是就和学弟同学学长们组了一个三世同堂的队伍,高一的学长wzhqwq ...

  10. Python3 常见数据类型的转换

    Python3 常见数据类型的转换 一.数据类型的转换,你只需要将数据类型作为函数名即可 OCP培训说明连接:https://mp.weixin.qq.com/s/2cymJ4xiBPtTaHu16H ...