背景

乾隆,雍正的第四子,在位60年,退位后又当了三年太上皇,终年89岁。

乾隆即位之初,实行宽猛互济的政策,务实足国,重视农桑,停止捐纳,平定叛乱等一系列活动中,充分体现了他的文治武功,乾隆帝向慕风雅,精于骑射,笔墨留于大江南北,并是一个有名的文物收藏家。清宫书画大多是他收藏的,他在位期间编纂的《四库全书》共收书3503种,79337卷,36304册,其卷数是《永乐大典》的三倍,成为我国古代思想文化遗产的总汇。

乾隆好游江南,喜欢江南的山水,喜欢江南的人文,喜欢江南的才气,同时他也喜欢江南的汉族美女。

描述

话说乾隆带着他的宰相刘罗锅和你出巡江南,被杭州城府邀请去听戏,至于什么戏,那就不知了。乾隆很高兴,撒酒与君臣共享。三更欲回住处,可是乾隆这人挺怪,他首先要到西湖边散散步,而且命令不准有人跟着他。

小醉,步于西湖岸,停于断桥前,突闻琴声悠悠,歌儿婉婉。这乐曲不哀伤不愁怅,少了一分怨女的羁绊,多了一分少女的期盼。乾隆走上前去,视其背影,为一女子手抚古琴,悠悠而唱。可是这么晚了,小女怎么还不回家呢,莫非是她起早床?乾隆走上前去,小声问道:“伊为何未宿?”,小女沉默片刻,转身而来。顿时,顿时,顿时!!!!!乾隆惊呆了!!!!哇!!!!噻!!!!!!这人,这伊!!!!原来!!!!!!!不是一个美女(狂汗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 <= 250.

此时的你,已经是皇帝身边的小太监,自然有必要为皇上解决此题。

格式

输入格式

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 to 10.

输出格式

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.

样例1

样例输入1

95.123 2

0.4321 5

5.1234 7

6.7592 3

98.999 5

1.0100 10

样例输出1

9048.385129

.01506334182914325601

92663.3181348508776705891407804544

308.806114738688

9509420210.697891990494999

1.10462212541120451001

题解

这道题目可以理解为求一个实数R的n次方,其中0.0 < R <= 9999.9,0 < n <= 250,所以可以发现使用浮点数是不能非常精确地保存精度要求这么高的结果的。于是决定使用字符串模拟操作。

再来分析小数点。因为实数的话进行大数乘法比较麻烦,所以我们可以使用一个变量p来保存小数点后数字的个数,从而将小数的乘法化为整数的乘法。

例如:

计算1.12的3次方,我们可以计算一下结果有6位小数(2*3),所以我们可以先计算112的三次方,然后将结果的后六位置为小数。计算得到112的3次方等于1404928,将后6位设为小数则位1.404928。

当然我们需要考虑一下整数部分最前面的0和小数部分最后面的0是不需要输出的。

除此之外,因为R最多是6位,所以不算小数点的话最多有5或6位(有可能六位里面都没有小数点),所以是可以用整数来表示的。所以我们的大数乘法可以用字符串乘以int的简化方法进行。

在我的程序中:

  • 字符串s用于存放计算结果;
  • init()函数用于将字符串代表的值初始化为1;
  • multi(int a)函数用于将字符串代表的数乘以一个成型变量a,并将结果保存在字符串s中;
  • output()函数用于输出最终的结果。
#include <cstdio>
#include <cstring>
using namespace std;
const int maxn = 11000;
char s[maxn], t[10];
int a, p, n;
void init()
{
memset(s, 0, sizeof(s));
s[0] = 1;
}
void multi(int a)
{
int c = 0;
for (int i = 0; i < maxn; i ++)
{
c += s[i] * a;
s[i] = c % 10;
c /= 10;
}
}
void output(int p)
{
int i, j;
for (i = maxn-1; i >= p && s[i] == 0; i --);
for (j = 0; j < p && s[j] == 0; j ++);
for (; i >= p; i --)
printf("%d", s[i]);
if (p > j)
putchar('.');
for (; i >= j; i --)
printf("%d", s[i]);
putchar('\n');
}
int main()
{
while (~scanf("%s%d", t, &n))
{
int len = strlen(t);
p = 0;
a = 0;
for (int i = 0; i < len; i ++)
{
if (t[i] == '.')
{
p = (len - 1 - i) * n;
}
else
{
a = a * 10 + (t[i] - '0');
}
}
init();
for (int i = 0; i < n; i ++)
{
multi(a);
}
output(p);
}
return 0;
}

Vijos 1010 清帝之惑之乾隆的更多相关文章

  1. 【高精度】Vijos P1010 清帝之惑之乾隆

    题目链接: https://vijos.org/p/1010 题目大意: 多组数据,求R的n次幂(R为不超过9999.9的小数 n<=200)R保证占6位 不输出前导0和后缀0,整数就只输出整数 ...

  2. vijos P1009清帝之惑之康熙

    </pre>背景康熙是中国历史乃至世界历史中最伟大的帝王之一,清除螯拜,撤除三藩,统一台湾,平定准葛尔叛乱:与此同时,出众的他也被世界各国遣清使臣所折服.康熙是历史上少有的全人,不仅文武兼 ...

  3. Vijos 1012 清帝之惑之雍正 平面最近点对(分治)

    背景 雍正帝胤祯,生于康熙十七年(1678)是康熙的第四子.康熙61年,45岁的胤祯继承帝位,在位13年,死于圆明园.庙号世宗. 胤祯是在康乾盛世前期--康熙末年社会出现停滞的形式下登上历史舞台的.复 ...

  4. 【枚举】Vijos P1012 清帝之惑之雍正

    题目链接: https://vijos.org/p/1012 题目大意: 给n个坐标(n<=100 000),求直线距离最短是多少.数据较大用long long 或 double 题目思路: [ ...

  5. 【动态规划】Vijos P1011 清帝之惑之顺治

    题目链接: https://vijos.org/p/1011 题目大意: 给一张N*M的地图(N,M<=500),可从任一点开始沿上下左右走,只能走比当前低的地方.问最长能走多少格. 题目思路: ...

  6. 【扩展欧几里德】Vijos P1009 清帝之惑之康熙

    题目链接: https://vijos.org/p/1009 题目大意: 两个人,一个在坐标x,每天走m,一个在坐标y,每天走n,坐标长L,问几天后碰面. 题目思路: [扩展欧几里德] 根据同余方程的 ...

  7. Vijos 1011 清帝之惑之顺治 记忆录式的动态规划(记忆化搜索)

    背景 顺治帝福临,是清朝入关后的第一位皇帝.他是皇太极的第九子,生于崇德三年(1638)崇德八年八月二ten+six日在沈阳即位,改元顺治,在位18年.卒于顺治十八年(1661),终24岁. 顺治即位 ...

  8. vijos 1011 清帝之惑之顺治

    背景 顺治帝福临,是清朝入关后的第一位皇帝.他是皇太极的第九子,生于崇德三年(1638)崇德八年八月二ten+six日在沈阳即位,改元顺治,在位18年.卒于顺治十八年(1661),终24岁. 顺治即位 ...

  9. Vijos 1040 高精度乘法

    描述 高精度乘法 输入:两行,每行表示一个非负整数(不超过10000位) 输出:两数的乘积. 样例1 样例输入1 99 101 样例输出1 9999 题解 这道题和之前的Vijos 1010 清帝之惑 ...

随机推荐

  1. JSP servlet的配置与使用

    1. servlet 的配置文件内容如下所示 <servlet>     <description>This is the description of my J2EE com ...

  2. Spring-bean作用域scope详解

    Spring Framework支持五种作用域(其中有三种只能用在基于web的Spring ApplicationContext). singleton 在每个Spring IoC容器中一个bean定 ...

  3. linux centos7.0安装subversion

    安装环境以及软件版本如下: subversion使用1.8.17版本,CentOS7.0(64位) 安装svn共需要使用如下软件,apr-1.5.2.tar.gz.apr-util-1.5.4.tar ...

  4. Mac和Windows系统下Mysql数据库的导入导出

    最近在构建数据库的过程中,需要将Mac os系统下的Mysql数据库导出成.sql文件,然后导入到windows系统下的Mysql中.经过学习总结出的步骤如下: 一.Mac os导出Mysql数据库 ...

  5. matlab错误:Subscript indices must either be real positive integers or logicals.

    matlab错误:Subscript indices must either be real positive integers or logicals. 中文解释:下标索引必须是正整数类型或者逻辑类 ...

  6. SQL Server中对存储过程的理解

    数据库的存储过程理解为,处理数据的子程序,写起来像函数,用起来像函数,在SQL Server中存储过程分为两大类,系统的和自定义的,系统的都放在master系统数据库中,自定义就是自己去写的,用DDL ...

  7. Coursera 机器学习笔记(二)

    主要为第三周课程内容:逻辑回归与正则化 逻辑回归(Logistic Regression) 一.逻辑回归模型引入 分类问题是指尝试预测的是结果是否属于某一个类. 维基百科的定义为:根据已知训练区提供的 ...

  8. 后台开发之IO缓冲区管理

    Linux系统IO中write原型为  ssize_t write(int  filedes, const void * buff, size_t nbytes) ; 当调用write写数据的时候,调 ...

  9. git 常用的命令符

    1. linux操作命令: touch Filename:创建一个文件: mkdir 文件夹名字:创建一个文件夹: cd pathname:切换磁盘: cd ..:返回上一级: rm Filename ...

  10. c++字符串的输入的思考

    字符串的输入,是学习c++的一个重点,也是一个极富有细节意味的知识点,如果你不了解这些细节,你可能会在写程序时犯错而一脸懵逼不知所措. 与此同时,我们要了解c++缓冲区的概念,程序的输入都建有一个缓冲 ...