【POJ 1001】Exponentiation (高精度乘法+快速幂)
2024-10-16 16:40:11
BUPT2017 wintertraining(15) #6A
题意
求\(R^n\) ( 0.0 < R < 99.999 )(0 < n <= 25)
题解
将R用字符串读进来,找到小数点的位置,然后转为整数。
用高精度乘法和快速幂计算。输出时要确定一下小数点的位置。
代码
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <iostream>
using namespace std;
const int base=10;
struct Num{
int a[1000],len;
Num(){memset(a,0,sizeof a);}
void input(int b){
int i;
if(b==0)len=1;
for(i=0;b;i++){
a[i]=b%base;
b/=base;
}
len=i;
}
void output()const {
for(int i=len-1;i>=0;i--){
printf("%d",a[i]);
}
puts("");
}
Num operator *(const Num &b)const{
Num c;
for(int i=0;i<len;i++)
for(int j=0;j<b.len;j++){
c.a[i+j]+=a[i]*b.a[j];
}
c.len=len+b.len-1;
for(int i=0;i<c.len;i++){
if(c.a[i]>=base){
c.a[i+1]+=c.a[i]/base;
c.a[i]%=base;
}
}
if(c.a[c.len])c.len++;
return c;
}
};
char s[1000],ans[1000];
int d;
Num qpow(Num n,int d){
Num ans;ans.input(1);
while(d){
if(d&1)ans=ans*n;
n=n*n;
d>>=1;
}
return ans;
}
int main() {
while(cin>>s>>d){
int i,j,b=0;
for(i=0;s[i];i++){
if(s[i]=='.'){j=i;}
else b=b*10+s[i]-'0';
}
int l=(i-j-1)*d;
Num c;c.input(b);
c=qpow(c,d);
for(i=c.len-1;i>=l;i--){
printf("%d",c.a[i]);
}
for(j=0;c.a[j]==0;j++);
if(i>j)printf(".");
for(i=l-1;i>=j;i--)printf("%d",c.a[i]);
puts("");
}
return 0;
}
最新文章
- PowerShell脚本自动设置安卓手机wifi代理
- 浅析word-break work-wrap区别
- Xcode 升级成Xcode 8 版本以后,出现 Signing for ";sqlite3--test"; requires a development team. 问题的解决
- c/c++ 常用的几个安全函数
- C#语法需要注意的地方
- 传智播客 Html基础知识学习笔记
- java_maven_linux_windows下项目运行jar
- ibatis实战之一对多关联
- php UNIX时间戳转换为指定日期格式
- 【转载】stm32定时器-----珍藏版
- Hadoop(四)HDFS集群详解
- Spark性能调优之解决数据倾斜
- [BZOJ1014] [JSOI2008] 火星人prefix (splay &; 二分答案)
- bootstrap的ajax提交
- PyCharm 2018.1破解过程
- K邻近回归算法
- js DOM操作 容易犯的错误
- 自定义django的admin后台action
- 4.three.js中的坐标系
- Easy WordPress Updates: Store FTP Info in wp-config.php
热门文章
- Mergeable Stack(链表实现栈)
- git repository description
- Ubuntu16系统中安装htpasswd
- 解决多人开发时使用window.onload的覆盖问题
- 理解npm、nvm、nodejs之间的关系
- 【Java基础】求出1-100之间偶数和
- mybtis逆向工程实战教程--条件查询
- AngularJS 中的 factory、 service 和 provider区别,简单易懂
- windows浏览器访问虚拟机开的rabbitmq服务,无法访问
- python(Django之Logging、API认证)