求高精度幂
Time Limit: 500MS           Memory Limit: 10000K
Total Submissions: 126980           Accepted: 30980

Description
对数值很大、精度很高的数进行高精度计算是一类十分常见的问题。比如,对国债进行计算就是属于这类问题。

现在要你解决的问题是:对一个实数R( 0.0 < R < 99.999 ),要求写程序精确计算 R 的 n 次方(Rn),其中n 是整数并且 0 < n <= 25。

Input
T输入包括多组 R 和 n。 R 的值占第 1 到第 6 列,n 的值占第 8 和第 9 列。

Output
对于每组输入,要求输出一行,该行包含精确的 R 的 n 次方。输出需要去掉前导的 0 后不要的 0 。如果输出是整数,不要输出小数点。
 
解决思路

这是一道高精度的题,主要是处理前导0和末尾0的时候有点麻烦。例如100.00可能会处理成1。

/**
求高精度幂
Time Limit: 500MS       Memory Limit: 10000K
Total Submissions: 126980       Accepted: 30980Description
对数值很大、精度很高的数进行高精度计算是一类十分常见的问题。比如,对国债进行计算就是属于这类问题。现在要你解决的问题是:对一个实数R( 0.0 < R < 99.999 ),要求写程序精确计算 R 的 n 次方(Rn),其中n 是整数并且 0 < n <= 25。Input
T输入包括多组 R 和 n。 R 的值占第 1 到第 6 列,n 的值占第 8 和第 9 列。Output
对于每组输入,要求输出一行,该行包含精确的 R 的 n 次方。输出需要去掉前导的 0 后不要的 0 。如果输出是整数,不要输出小数点。解决思路这是一道高精度的题,主要是处理前导0和末尾0的时候有点麻烦。例如100.00可能会处理成1。程序使用:http://my.oschina.net/leopardsaga/blog/123495?fromerr=atjgdwtv
*/
#include "stdafx.h"
#include<stdio.h>
#include<math.h>
#include<string>int len_r;
int* pow_s(int x,int n,int len);int main(){char num_c[6];int N;while(scanf("%s %d", num_c, &N) != EOF){int position=0, i=0, num=0, j=0,len=0;for (i=0; i<strlen(num_c); i++) {if (num_c[i] == '.'){position = (strlen(num_c) - 1 - i) * N; // calculate decimal point position after R^n}else{               num = num*10 + num_c[i] - 48; // transfer float to integerif(num*10/1){len++;}}       }int* result = pow_s(num,N,len);if(len_r < position){printf("."); // print decimal pointfor (i=0; i<position-len_r; i++){printf("0"); // print zero between decimal point and decimal}//while (product[j] == 0) // trim trailing zeros{//    j++;//}for (i=len_r-1; i>=j; i--){printf("%d", result[i]);}} else {while (result[j]==0 && j<position){ // trim trailing zerosj++;}for (i=len_r-1; i>=j; i--){if (i+1 == position){ // cause index in C language starts from 0              printf(".");}printf("%d", result[i]);}}free(result);} free(num_c);return 0;
}int* pow_s(int a,int n,int len){int i,j,carry=0;int* result = (int*)malloc(sizeof(int)*(len)*n);result[0] = 1;len_r = 1;for (j = 0; j < n; j++){for (i = 0; i < len_r; i++){int temp = result[i]*a + carry;result[i] = temp % 10;carry = temp / 10;      }while (carry){result[i++] = carry % 10;carry /= 10;}len_r = i;} return result;
}

程序使用:http://my.oschina.net/leopardsaga/blog/123495?fromerr=atjgdwtv

转载于:https://www.cnblogs.com/zhuqingqin/p/5396650.html

算法练习——ACM_1001_Exponentiation相关推荐

  1. golang通过RSA算法生成token,go从配置文件中注入密钥文件,go从文件中读取密钥文件,go RSA算法下token生成与解析;go java token共用

    RSA算法 token生成与解析 本文演示两种方式,一种是把密钥文件放在配置文件中,一种是把密钥文件本身放入项目或者容器中. 下面两种的区别在于私钥公钥的初始化, init方法,需要哪种取哪种. 通过 ...

  2. 通用解题法——回溯算法(理解+练习)

    积累算法经验,积累解题方法--回溯算法,你必须要掌握的解题方法! 什么是回溯算法呢? 回溯算法实际上一个类似枚举的搜索尝试过程,主要是在搜索尝试过程中寻找问题的解,当发现已不满足求解条件时,就&quo ...

  3. 伍六七带你学算法 进阶篇-生命游戏

    有趣的算法题–生命游戏 难度-中等 根据 百度百科 ,生命游戏,简称为生命,是英国数学家约翰·何顿·康威在 1970 年发明的细胞自动机. 想要体验生命游戏的小伙伴可以到这里-->生命游戏 进入 ...

  4. 伍六七带你学算法 进阶篇-排序算法

    给定一个整数数组 nums,将该数组升序排列. 示例 1: 输入:[5,2,3,1] 输出:[1,2,3,5] 示例 2: 输入:[5,1,1,2,0,0] 输出:[0,0,1,1,2,5] 各排序算 ...

  5. 伍六七带你学算法 入门篇-卡牌分组

    力扣-914. 卡牌分组 难度-简单 这是一道非常有趣的题,提交通过率令人深思 ,思考它是不是一道简单的题- 开始正题: 给定一副牌,每张牌上都写着一个整数. 此时,你需要选定一个数字 X,使我们可以 ...

  6. 伍六七带你学算法 入门篇-最小的k个数

    java面试题-最小的k个数 难度-简单 输入整数数组 arr ,找出其中最小的 k 个数.例如,输入4.5.1.6.2.7.3.8这8个数字,则最小的4个数字是1.2.3.4. 示例 1: 输入:a ...

  7. 十大算法,描述+代码+演示+分析+改进(赶紧收藏!)

    十大算法 1.冒泡排序 ​ (1)算法描述 ​ 冒泡排序是一种简单的排序算法.它重复地走访过要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来.走访数列的工作是重复地进行直到没有再需要 ...

  8. 人工智能3d建模算法_打破国外垄断,全国产3D芯片为机器人“点睛”

    ◎ 科技日报记者 崔爽 传统机器人只有"手",只能在固定好的点位上完成既定操作,而新一轮人工智能技术大大推动了机器和人的协作,这也对机器人的灵活性有了更高要求. 要想像人一样测量. ...

  9. 算法设计思想(5)— 递归法

    1. 递归概念 递归 Recursion是指在函数的定义中使用函数自身的方法,直观上来看,就是某个函数自己调用自己. ​ 递归有两层含义: 递归问题必须可以分解为若干个规模较小.与原问题形式相同的子问 ...

最新文章

  1. VMware15克隆虚拟机Centos
  2. 中文ocr识别通过crnn
  3. 人脸识别有哪些利与弊
  4. 基于 Ubuntu 系统安装 CUDA 和 cuDNN
  5. html中代码执行顺序
  6. jdbc连接mysql8的一些坑_mysql8.0 jdbc连接注意事项
  7. 【渝粤教育】电大中专电商运营实操 (18)作业 题库
  8. 作者:李涛,男,南京邮电大学计算机学院、软件学院院长,南京邮电大学大数据研究院院长。...
  9. kafka创建topic报错
  10. microsoft edge怎么截长图_实用技能 | Fireshot 网页截长图工具
  11. windows98远程桌面连接
  12. 计算机项目答辩评分标准,课题答辩评分标准是什么
  13. 银河麒麟v10离线安装docker-ce
  14. Editor编辑器操作
  15. 不会真有人Macbook录屏没声音吧?别用SoundFlower了!
  16. JAVA爬需要账号登录的网_如何用 Python 爬取需要登录的网站?
  17. 微信小程序从前端wxml页面数据获取,到JS页面数据对象字符化,传递给后台,前台再从后台获取数据并在wxml页面动态展示数据(前后台交互实现发表动态功能)
  18. 7-4 天长地久 (20分)
  19. Educoder - Java类和对象之对象组合之求圆锥体表面积
  20. 我的世界java版注册账号教程_我的世界java版官方购买教程

热门文章

  1. Linux下对SVN的相关操作命令
  2. C#后台导入css和设置前台关键字和描述
  3. 自学大数据:用以生产环境的Hadoop版本比较
  4. ibatis自动生成插件
  5. cms是什么意思啊_GC 知识点补充——CMS
  6. 【Groovy】map 集合 ( map 集合操作符重载 | - 操作符重载 | 代码示例 )
  7. 【C 语言】数组 ( 指针数组用法 | 自我结束能力 )
  8. 【Android RTMP】音频数据采集编码 ( 音频数据采集编码 | AAC 高级音频编码 | FAAC 编码器 | Ubuntu 交叉编译 FAAC 编码器 )
  9. 【Android NDK 开发】Ubuntu 函数库交叉编译 ( Android 动态库交叉编译 | Android 静态库交叉编译 )
  10. thinkphp5.1+ 使用 Redis 缓存