Problem F: Exponentiation
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的更多相关文章
- Problem F: Exponentiation大数求幂
DescriptionProblems involving the computation of exact values of very large magnitude and precision ...
- 实验12:Problem F: 求平均年龄
Home Web Board ProblemSet Standing Status Statistics Problem F: 求平均年龄 Problem F: 求平均年龄 Time Limit: ...
- 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 ...
- Codeforces Gym 100500F Problem F. Door Lock 二分
Problem F. Door LockTime Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/gym/100500/at ...
- Codeforces Gym 100002 Problem F "Folding" 区间DP
Problem F "Folding" Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/gym/ ...
- 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 ...
- Problem F: 合唱比赛开始了!
Problem F: 合唱比赛开始了! Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 440 Solved: 201[Submit][Status][ ...
- 几何入门合集 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个 ...
- Problem F Plug It In!
题目链接:https://cn.vjudge.net/contest/245468#problem/F 大意:给你插座和电器的对应关系,有多个电器对应一个插座的情况,但是一个插座只能供一个电器使用,现 ...
随机推荐
- UberX及以上级别车奖励政策(优步北京第四组)
优步北京第四组: 定义为2015年7月20日至今激活的司机(以优步后台数据显示为准) 滴滴快车单单2.5倍,注册地址:http://www.udache.com/如何注册Uber司机(全国版最新最详细 ...
- linux 使用sudo开放普通用户权限
整理一下以前写的东东,刚才又忘了- ---------------------------------------------------------------------------------- ...
- Javascript基础篇小结
转载请声明出处 博客原文 随手翻阅以前的学习笔记,顺便整理一下放在这里,方便自己复习,也希望你有也有帮助吧 第一课时 入门基础 知识点: 操作系统就是个应用程序 只要是应用程序都要占用物理内存 浏览器 ...
- Windows Server 2003 安装Sql Server 2005 问题处理
安装途中遇到: 问题1.无法找到产品Microsoft SQL Server Native Client的安装程序包.请使用安装包sqlncli.msi的有效副本重新安装? 答:安装SQL Serve ...
- [vc]如何对radio按钮分组
如何使用多组? 多组和一组是一样的使用,只要搞清楚哪个是哪一组的就行了.再为对话框添加Radio3和Radio4.很简单,先为这些RadioButton排个顺序,就是排列他们的TABORDER.在对话 ...
- apache+mysql+php环境的手动搭建
一.搭建Apache Http Server 官方下载地址:http://www.apachehaus.com/cgi-bin/download.plx 搭建环境:win10 64位 WIN10 64 ...
- Labview学习之远程控制VI
Labview学习之远程控制VI 从LabVIEW 6.1开始,LabVIEW集成了Remote Panels技术,允许用户直接在客户端计算机上打开并操作位于服务器端计算机上的VI的前面 ...
- 在Java SE中使用Hibernate处理数据
如今,Hibernate正在迅速成为非常流行的(如果不是最流行的)J2EE O/R映射程序/数据集成框架.它为开发人员提供了处理企业中的关系数据库的整洁.简明且强大的工具.但如果外部需要访问这些已被包 ...
- linux杂记(⑨)vi使用说明
基本上vi共分为三种模式,分别是[一般模式]].[编辑模式]与[指令列命令模式].这三种模式的作用是: 一般模式:以vi处理一个档案的时候,一进来该档案就是一般模式.在这个模式中,你可以使用[上下左右 ...
- C iOcp
#include <winsock2.h> //#include <windows.h> #include <stdio.h> #define PORT 5150 ...