ACM_1001_Exponentiation 详解
参考:http://blog.csdn.net/rually/article/details/8585268
#include<iostream>
using namespace std;
#define MAX 126
int first[MAX],second[MAX]; void pow(char base[],int n) //base 有效数字
{
int k=;
int point=-;//小数点的位置
int tmp[MAX];//存放临时乘积
//初始化 为0
for(int i=;i<MAX;i++ )
{
first[i]=second[i]=;
}
//将输入的底数反过来存入first second
for(int i=;i>=;i--)
{
if(base[i]!='.')
{
first[k]=second[k++]=base[i]-'';
}
else //记录小数点的位置
{
point=-i; // 小数点后面有几位数字
}
}
point=point*n; //乘方 乘n-1次 first 里面存放的是每次乘方的结果 core
for(int i=;i<n-;i++)
{
//每次乘方前需要将存放临时结果的tmp清0
for(int j=;j<MAX;j++)
{
tmp[j]=;
}
//开始乘方
for(int j=;j<*(i+);j++) /// first[j] 数字地一次有效位数5 平方变成10位15 ,20位。。。。
{
for(int k=;k<;k++) //second[k]
{
tmp[j+k]+=first[j]*second[k]; //core 结果逐位的乘原数 j表示错位
}
}
//进位
for(int k=;k<*(i+); k++)
{
if(tmp[k]>)
{
tmp[k+]+=(int)(tmp[k]/);
tmp[k]=tmp[k]%;
}
//tmp付给first
first[k]=tmp[k];
}
} //end 乘方 //计算出有效数位的长度
//将数字的前面和后面的小数点去掉
int back=,front=point ;
for(int i=;i<point;i++) //后面的输出截止点
{
if(first[i]!=)
{
back=i;
break;
}
}
for(int i=*n-;i>=point;i--) //前面的输出起点
{
if(first[i]!=)
{
front=i;
break;
}
} //将计算结果打印出来
for(int ii=front;ii>=back;ii--)
{
if(ii==point)// 因为是从最右边开始 所以的到ii的时候说明右面还剩ii位数字
{
//if(first[ii]!=0)
//{
// cout<<first[ii]<<".";
//}
//else
//{
// cout<<".";
//}
if(first[ii]!=)
{
cout<<first[ii];
} else
{
if(ii<front)
{
cout<<first[ii];
}
}
cout<<".";
}
else
{
cout<<first[ii];
}
}
} int main()
{
//char a[7]="0.4321"; //【6】会错误 最后还需一个“ ”
//int n=20;
//char a[7] = "99.999";
//int n = 25;
char a[] = "3.2000";
int n = ;
pow(a,n); cin.get();
return ;
}
ACM_1001_Exponentiation 详解的更多相关文章
- Linq之旅:Linq入门详解(Linq to Objects)
示例代码下载:Linq之旅:Linq入门详解(Linq to Objects) 本博文详细介绍 .NET 3.5 中引入的重要功能:Language Integrated Query(LINQ,语言集 ...
- 架构设计:远程调用服务架构设计及zookeeper技术详解(下篇)
一.下篇开头的废话 终于开写下篇了,这也是我写远程调用框架的第三篇文章,前两篇都被博客园作为[编辑推荐]的文章,很兴奋哦,嘿嘿~~~~,本人是个很臭美的人,一定得要截图为证: 今天是2014年的第一天 ...
- EntityFramework Core 1.1 Add、Attach、Update、Remove方法如何高效使用详解
前言 我比较喜欢安静,大概和我喜欢研究和琢磨技术原因相关吧,刚好到了元旦节,这几天可以好好学习下EF Core,同时在项目当中用到EF Core,借此机会给予比较深入的理解,这里我们只讲解和EF 6. ...
- Java 字符串格式化详解
Java 字符串格式化详解 版权声明:本文为博主原创文章,未经博主允许不得转载. 微博:厉圣杰 文中如有纰漏,欢迎大家留言指出. 在 Java 的 String 类中,可以使用 format() 方法 ...
- Android Notification 详解(一)——基本操作
Android Notification 详解(一)--基本操作 版权声明:本文为博主原创文章,未经博主允许不得转载. 微博:厉圣杰 源码:AndroidDemo/Notification 文中如有纰 ...
- Android Notification 详解——基本操作
Android Notification 详解 版权声明:本文为博主原创文章,未经博主允许不得转载. 前几天项目中有用到 Android 通知相关的内容,索性把 Android Notificatio ...
- Git初探--笔记整理和Git命令详解
几个重要的概念 首先先明确几个概念: WorkPlace : 工作区 Index: 暂存区 Repository: 本地仓库/版本库 Remote: 远程仓库 当在Remote(如Github)上面c ...
- Drawable实战解析:Android XML shape 标签使用详解(apk瘦身,减少内存好帮手)
Android XML shape 标签使用详解 一个android开发者肯定懂得使用 xml 定义一个 Drawable,比如定义一个 rect 或者 circle 作为一个 View 的背景. ...
- Node.js npm 详解
一.npm简介 安装npm请阅读我之前的文章Hello Node中npm安装那一部分,不过只介绍了linux平台,如果是其它平台,有前辈写了更加详细的介绍. npm的全称:Node Package M ...
随机推荐
- javascript 之 prototype继承机制
理解Javascript语言的继承机制 javascript没有"子类"和"父类"的概念,也没有"类"(class)和"实例&qu ...
- 13 个免费的 PNG 图像的优化和压缩工具
图像格式有许多种不同类型,在互联网上最常见的有JPEG.GIF.BMP.TIFF和PNG.每一种图像格式都有它自己的用途,比如GIF是用于动画的,JPEG是用于高清图片的,这种图片在保存或者调整大小后 ...
- windows7 64,32位下scrapy爬虫框架的环境搭建
适用于python 2.7 64位安装 一.操作系统:WIN7 64位 二.python版本:2.7 64位(scrapy目前不支持3.x) 不确定位数的,看图 三.安装相关软件:(可以从我的百度网盘 ...
- oralce 密码长度
Oracle 11G的新特性所致, Oracle 11G创建用户时缺省密码过期限制是180天, 如果超过180天用户密码未做修改则该用户无法登录. Oracle提示错误消息ORA-28001: the ...
- ArcGIS GDB 文件中的lock文件影响复制
复制或压缩gdb文件的时候,经常碰到有lock文件,解决方法是: 在catalog中停止相应的地图服务 如果用catalog预览过相应的地图,关闭catalog
- Javascript理解this对象
this是函数运行时自动生成的一个内部对象,只能在函数内部使用,但总指向调用它的对象. 通过以下几个例子加深对this的理解. (1)作为函数调用 var name = 'Jenny'; functi ...
- VS2013 破解
密钥 : BWG7X-J98B3-W34RT-33B3R-JVYW9
- USACO Milking Cows
思路: 脑抽了,一看题目,这不就是线段树么,离散化区间合并..最终发现我并不会写...于是看了下题目范围10^6...模拟水之..每个区间左端点+1,右端点-1,从左到右扫一下就行了... 代码: / ...
- Bootstrap <基础十九>分页
Bootstrap 支持的分页特性.分页(Pagination),是一种无序列表,Bootstrap 像处理其他界面元素一样处理分页. 分页(Pagination) 下表列出了 Bootstrap 提 ...
- windows8.1下javaweb环境搭建及基本配置(jdk+tomcat+eclipse)
1.下载安装jdk在无空格的路径下,否则在linux下可能出问题.配置环境变量: a.新建系统变量——JAVA_HOME,值——D:\programming\java\jdk8 // win8下若建为 ...