高精度算r的n次方 问题 H: 乾隆巡江南
问题 H: 乾隆巡江南
时间限制: 2 Sec 内存限制: 128 MB
提交: 13 解决: 3
[提交][状态][讨论版]
题目描述
话说乾隆带着他的宰相刘罗锅和你出巡江南,被杭州城府邀请去听戏,至于什么戏,那就不知了。乾隆很高兴,撒酒与君臣共享。三更欲回住处,可是乾隆这人挺怪,他首先要到西湖边散散步,而且命令不准有人跟着他。 小醉,步于西湖岸,停于断桥前,突闻琴声悠悠,歌儿婉婉。这乐曲不哀伤不愁怅,少了一分怨女的羁绊,多了一分少女的期盼。乾隆走上前去,视其背影,为一女子手抚古琴,悠悠而唱。可是这么晚了,小女怎么还不回家呢,莫非是她起早床?乾隆走上前去,小声问道:“伊为何未宿?”,小女沉默片刻,转身而来。顿时,顿时,顿时!!!!!乾隆惊呆了!!!!哇!!!!噻!!!!!!这人,这伊!!!!原来!!!!!!!不是一个美女(狂汗ing)。小女并未回答她的话,只是与乾隆侃了侃诗。乾隆兴哉,问其曰:“不知偶能助伊否?”,小女曰:“偶无所以助,且有一事相求,愿君能解之。” 乾隆一看,立刻晕到在地,片刻而起,曰:“明日必解之”,且去。 回到家中,乾隆夜召你“入寝”,曰:“如此姑娘,如此情调,如此罗曼蒂克,竟然丢一个如此煞风景之问”,一边发气,一边把这个问题交给你。你一看,顿然发现,原来是用蝌蚪文写的: Problems involving the computation of exact values of very large magnitude and precision are common. For example, the computation of the national debt is a taxing experience for many computer systems. This problem requires that you write a program to compute the exact value of Rn where R is a real number ( 0.0 < R < = 9999.9) and n is an integer such that 0 < n < = 200. 此时的你,已经是皇帝身边的小太监,自然有必要为皇上解决此题。
输入
The input will consist of a set (less than 11) of pairs of values for R and n. The R value will occupy columns 1 through 6, and the n value will be in columns 8 and 9.
输出
The output will consist of one line for each line of input giving the exact value of R^n. Leading zeros should be suppressed in the output. Insignificant trailing zeros must not be printed. Don't print the decimal point if the result is an integer.
样例输入
95.123 2
0.4321 5
5.1234 7
6.7592 3
98.999 5
1.0100 10
样例输出
9048.385129
.01506334182914325601
92663.3181348508776705891407804544
308.806114738688
9509420210.697891990494999
1.10462212541120451001 题目意思就是说,算R的n次方,整数部分全是零的话不要输出0(如例2),小数最后的0也不用输出来,例如0.100只需输出.1即可,若答案是整数,不用输出小数点
#include <iostream>
#include <string>
#include <cstring>
#include <algorithm>
using namespace std;
int main()
{
char a1[];
int a[];
int b[];
int c[];
int n;
while (cin >> a1 >> n)
{
memset(a, , sizeof(a));
memset(b, , sizeof(b));
memset(c, , sizeof(c));
int l = strlen(a1);
int k=-, j, i;//k一开始初始化为-1,为了辨别输进来的是小数还是整数
for (i = ; i < l; i++)
{
if (a1[i] == '.')
{//是小数的话,先把"."去了
k = i;
for (j = i; j < l; j++)
{
a1[j] = a1[j + ];//小数点后的几位都向前移一位
}
k = l - k - ;//k用来标记第几位应该有小数
break;
}
}
if (k != -)
{//输进来是小数的话
for (i = ; i <= l - ; i++)
{
a[l - - i] = a1[i] - '';
b[l - - i] = a1[i] - '';
}
l--;
}
else
{//是整数的话
for (i = ; i <= l - ; i++)
{
a[l - i] = a1[i] - '';//倒的存入a数组
b[l - i] = a1[i] - '';
}
} int lc = l;
int x;
int nn = n - ;
while (nn--)
{
for (i = ; i <= l; i++)//这里是l
{
x = ;
for (j = ; j <= lc; j++)//这里是lc,别弄反了,一开始我就反了
{//乘法运算
c[i + j - ] = a[i] * b[j] + x + c[i + j - ];//当前位=乘机+进的位+当前位
x = c[i + j - ] / ;
c[i + j - ] = c[i + j - ] % ;
}
c[lc + i] = x;
}
lc = l + lc;
for (i = ; i <= lc; i++)
{
b[i] = c[i];
}
memset(c, , sizeof(c));
}
if (k == -)
{//整数的情况
while (b[lc] == && lc>) lc--;//删除前导零
for (i = lc; i >= ; i--) cout << b[i];
cout << endl;
}
else
{//小数的情况 bool f = ;
for (i = lc; i >= n * k + ; i--)//n*k这个位置要放‘.’
{//先输出整数部分
if (b[i] == && f == ) continue;
else if (b[i] != ) { f = ; cout << b[i]; }
else cout << b[i];
}
f = ;
int pp = ;
for (i = ; i <= n * k; i++)
{
if (b[i] == && f == ) continue;
else if (b[i] != && f == ) { f = ; pp = i; break; }
}
if (i != n * k + )//i==n*k+1时,代表小数位全是0,不需要输出‘.’
{
cout << ".";
for (i = n * k; i >= pp; i--) cout << b[i];
}
cout << endl;
}
}
return ;
}
高精度算r的n次方 问题 H: 乾隆巡江南的更多相关文章
- 洛谷 P1045 麦森数 (快速幂+高精度+算位数骚操作)
这道题太精彩了! 我一开始想直接一波暴力算,然后叫上去只有50分,50分超时 然后我改成万位制提高运算效率,还是只有50分 然后我丧心病狂开long long用10的10次方作为一位,也就是100亿进 ...
- A - 高精度(大数)N次方(第二季水)
Description Problems involving the computation of exact values of very large magnitude and precision ...
- Attrib +s +a +h +r 隐藏文件原理与破解
制作了一个PE启动盘,不过这个启动盘不能深度隐藏,否则没效果,可以又想不让别人看见PE启动盘的一些内容,防止别人误删或者修改,于是就想找一种可以隐藏文件的方法,普通的隐藏文件的方法如下:
- 【高精度】NCPC 2014 C catalansqure
题目链接: http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1789 题目大意: 求大卡特兰数..公式如下.输入n求Sn(n<=5000) 题目 ...
- 1001. Exponentiation高精度运算总结
解题思路 这道题属于高精度乘法运算,要求输入一个实数R一个指数N,求实数R的N次方,由于R有5个数位,而N又特别大,因此用C++自带的数据类型放不下. 解题思路是通过数组储存每次乘积结果和底数的每一位 ...
- 高精度POJ1001
今天看到这道题了 poj1001 题目地址是http://bailian.openjudge.cn/practice/1001/ 英文看得懂,可是算法不明白,所以转别人的文章,留着给学生看看:乔高建( ...
- Exponentiation(求高精度幂)
Exponentiation Time Limit: 500MS Memory Limit: 10000K Total Submissions: 175340 Accepted: 42341 ...
- Poj.Grids 2951 浮点数求高精度幂
2951:浮点数求高精度幂 总时间限制: 1000ms 内存限制: 65536kB 描述 有一个实数 R ( 0.0 < R < 99.999 ) ,要求写程序精确计算 R 的 n 次方. ...
- 求高精度幂(java)
求高精度幂 时间限制:3000 ms | 内存限制:65535 KB 难度:2 描述 对数值很大.精度很高的数进行高精度计算是一类十分常见的问题.比如,对国债进行计算就是属于这类问题. 现在要 ...
随机推荐
- 用户密码管理和 su 命令
1.passwd root 用户给自己改 密码,直接 输入 passwd 就可以了 若是给其它用户修改密码,就需要 passwd user_name 用户锁定和解锁 passwd -l user_ ...
- c++——基本概念
如何理解c/c++中的指针?每种编程语言都使用指针,但Java.c#等将指针隐藏,而c/c++将指针暴露给了用户(程序员)https://www.cnblogs.com/gxcdream/p/4805 ...
- hdu4338 Simple Path
Everybody knows that totalfrank has absolutely no sense of direction. Getting lost in the university ...
- 静态代码块 2.构造代码块3.构造方法的执行顺序是1>2>3;明白他们是干嘛的就理解了。
1.静态代码块 2.构造代码块3.构造方法的执行顺序是1>2>3;明白他们是干嘛的就理解了.1.静态代码块:是在类的加载过程的第三步初始化的时候进行的,主要目的是给类变量赋予初始值.2.构 ...
- Python中元组、列表、字典的遍历和相互转化
一.元组,列表,字典的遍历 1.1 元组的遍历 元组的遍历借助 range() 函数,基本思想是通过元组的长度使用for循环进行遍历,代码如下: fruits=("apple&quo ...
- Go Example--变参函数
package main import "fmt" func main() { sum(1,2) sum(1,2,3) nums := []int{1,2,3,4} //nums. ...
- linux常见系统调用函数列表
以下是Linux系统调用的一个列表,包含了大部分常用系统调用和由系统调用派生出的的函数.这可能是你在互联网上所能看到的唯一一篇中文注释的Linux系统调用列表,即使是简单的字母序英文列表,能做到这么完 ...
- 数据库连接池——C3P0
定义: 本质上就是个容器(集合)存放数据库连接的容器.当系统初始化以后,容器被创建,容器中就会申请一些连接对象.当用户来访问的数据库的时候,从容器中取连接对象,用户用完之后归还. 使用方法: 标准接口 ...
- YII2常用知识点总结
YII2常用知识点总结 (一)总结性语句 (1)经常看看yii源码比如vendor\yiisoft\yii2\web这个目录(很重要)下的文件中的方法(这些文件中的公共方法,大致看了下基本上都可以通过 ...
- Jmeter关于断言
本文摘自:一颗糖果 https://www.cnblogs.com/linglingyuese/p/linglingyuese-five.html 1.断言持续时间(Duration to Ass ...