Problem F: Exponentiation
Time Limit: 1 Sec Memory Limit: 128 MB
Submit: 4 Solved: 2
[Submit][Status][Web Board] [Edit] [TestData]
Description
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 < 99.999) and n is an integer such that $0 < n \le 25$.

Input
The input will consist of a set 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.

Output
The output will consist of one line for each line of input giving the exact value of Rn. Leading zeros and insignificant trailing zeros should be suppressed in the output.

Sample Input
95.123 12
0.4321 20
5.1234 15
6.7592 9
98.999 10
1.0100 12
Sample Output
548815620517731830194541.899025343415715973535967221869852721
.00000005148554641076956121994511276767154838481760200726351203835429763013462401
43992025569.928573701266488041146654993318703707511666295476720493953024
29448126.764121021618164430206909037173276672
90429072743629540498.107596019456651774561044010001
1.126825030131969720661201
主要思路是:几的几次方。实际上也就是大数相乘,先把小数点去掉,然后相乘,最后再把小数点加上。比如说的 a 的 n 次方,那先把字符数组a里面的东西,赋值给字符数组b,然后 a 和 b 进行运算,乘的结果放到sum数组里,然后整型的 sum 数组里的每个元素转换成字符型的,赋值给字符数组b,然后再和 a数组运算,运算的次数和你输入的几次方有关系。。然后再进行细节方面的问题……

#include<iostream>
#include<stdio.h>
#include<string.h>
using namespace std;
int main()
{
char a[];
char b[];//和字符数组a一样的
int n,i,j,k,lena,lenb,g,g1,h,ji1,ji2;
int sum[];
char s[];
while(scanf("%s%d",&a,&n)!=EOF)
{
if(n==)
cout<<a<<endl;
else
{
int count=;
memset(sum,,sizeof(sum));
lena=strlen(a);
for(i=;i<lena;i++)
{
if(a[i]=='.')
{
count=lena-i-;//小数点后面几位
for(j=i;j<lena-;j++)
{
a[j]=a[j+];
}
a[j]='\0';
lena--; //变成没有小数点的数
break;
}
}
count=count*n;//经过处理小数点最终有count位
for(i=;i<lena;i++)
{
b[i]=a[i];
}
b[i]='\0';
lenb=strlen(b);
for(i=;i<=n-;i++)
{
memset(sum,,sizeof(sum));
g=;g1=;
for(j=lenb-;j>=;j--)//下面的乘数
{
for(k=lena-;k>=;k--)//上面的乘数
{
sum[g--]+=(a[k]-'')*(b[j]-'');
}
g1--;
g=g1;
}
for(k=;k>=;k--)
{
sum[k-]+=sum[k]/;
sum[k]=sum[k]-sum[k]/*;
}
int start=;
int l=;
while(!sum[start] &&start<=)
start++;
for(h=start;h<=;h++)
{
b[l++]=sum[h]+'';
}
b[l]='\0';
lenb=strlen(b);
}
if(count!=)
{
for(g=;g<=;g++)
s[g]=sum[g]+'';
s[]='\0';
for(i=;i>-count;i--)
s[i+]=s[i];
s[i+]='.';
for(i=;i<=;i++)
{
if(s[i]!='')
{
ji1=i;
break;
}
}
for(i=;i>=;i--)
{
if(s[i]!='')
{
ji2=i;
break;
}
}
for(i=ji1;i<=ji2;i++)
cout<<s[i];
cout<<endl;
}
else
cout<<b<<endl;
}
}
return ;
}

Problem F: Exponentiation的更多相关文章

  1. Problem F: Exponentiation大数求幂

    DescriptionProblems involving the computation of exact values of very large magnitude and precision ...

  2. 实验12:Problem F: 求平均年龄

    Home Web Board ProblemSet Standing Status Statistics   Problem F: 求平均年龄 Problem F: 求平均年龄 Time Limit: ...

  3. The Ninth Hunan Collegiate Programming Contest (2013) Problem F

    Problem F Funny Car Racing There is a funny car racing in a city with n junctions and m directed roa ...

  4. Codeforces Gym 100500F Problem F. Door Lock 二分

    Problem F. Door LockTime Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/gym/100500/at ...

  5. Codeforces Gym 100002 Problem F "Folding" 区间DP

    Problem F "Folding" Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/gym/ ...

  6. Codeforces Gym 100286F Problem F. Fibonacci System 数位DP

    Problem F. Fibonacci SystemTime Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acm.hust.edu.cn/vjudg ...

  7. Problem F: 合唱比赛开始了!

    Problem F: 合唱比赛开始了! Time Limit: 1 Sec  Memory Limit: 128 MBSubmit: 440  Solved: 201[Submit][Status][ ...

  8. 几何入门合集 gym101968 problem F. Mirror + gym102082 Problem F Fair Chocolate-Cutting + gym101915 problem B. Ali and Wi-Fi

    abstract: V const & a 加速 F. Mirror 题意 链接 问题: 有n个人在y=0的平面上(及xoz平面).z=0平面上有一面镜子(边平行于坐标轴).z=a平面上有q个 ...

  9. Problem F Plug It In!

    题目链接:https://cn.vjudge.net/contest/245468#problem/F 大意:给你插座和电器的对应关系,有多个电器对应一个插座的情况,但是一个插座只能供一个电器使用,现 ...

随机推荐

  1. 【每天一个Linux命令】12. Linux中which命令的用法

    which  用来查看可执行文件的位置. 1.命令格式: which 可执行文件名称 2.命令功能: which指令会在PATH变量指定的路径中,搜索某个系统命令的位置,并且返回第一个搜索结果. 3. ...

  2. Xcode证书破解 iphone真机部署

    Xcode证书破解 iphone真机部署 证书伪造: 先按照该教程的步骤添加证书.注意,原教程选择的是"系统"证书,这里我们用"登录"证书,切记. Xcode破 ...

  3. oracle 建表后添加表注释及字段注释

    oracle添加表注释和表字段注释 创建Oracle数据库表时候加上注释 CREATE TABLE t1(id  varchar2(32) primary key,name VARCHAR2(8) N ...

  4. PLSQl远程连接oracle数据库

    PLSQL远程连接Oracle 10G 1.在安装ORACLE服务器的机器上搜索下列文件, ORACLE 服务器上的文件 oci.dll     ocijdbc10.dll     ociw32.dl ...

  5. mac电脑批量解压android apk文件图形化工具--apkDecode

    mac电脑apk文件解压软件,简单的用图形界面将apktools包装了下,使用起来非常简单,可以将apk文件批量解压缩,方便大家查看一些东东,仅供学习目的. 使用步骤如下: 1 下载apkDecode ...

  6. HDU 4715 Difference Between Primes (打表)

    Difference Between Primes Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/O ...

  7. SQL Server索引进阶第十一篇:索引碎片分析与解决

    相关有关索引碎片的问题,大家应该是听过不少,也许也很多的朋友已经做了与之相关的工作.那我们今天就来看看这个问题. 为了更好的说明这个问题,我们首先来普及一些背景知识. 知识普及 我们都知道,数据库中的 ...

  8. C#操作XML存取创建XML

    using System.Xml; #region 生成XML文档 /// <summary> ///  /// </summary> /// <param name=& ...

  9. List用法

    定义一个类: using System;using System.Collections.Generic;using System.Linq;using System.Web; namespace W ...

  10. ViEmu for VS2013-3.2.1 破解(转)

    ViEmuVS2013-3.2.1 破解   VS升级到2013后,作为一个Vimer,自然需要更新最新的ViEmu插件,因为现在离了Vim,写代码已经寸步难行了. ViEmu 3.2.1的破解其实和 ...