Exponentiation POJ-1001
http://poj.org/problem?id=1001
//10000000 100000 #include<iostream> #include<cstring> using namespace std; ],tts[]; /*用于处理输入,删去点,签到0,点后0,统计小数点后数的个数保存至origu */ ],ans[],t_ans[]; // t_ans存乘法运算的中间过程 int b,u,origu,BITS,origBITS; void my_pow(int x){ ) return ; my_pow(x/); //接下来ans*ans memset(t_ans,,sizeof(t_ans)); ;i>=;i--){ //模拟乘法 -i; /*tpos即 这次乘的结果存在t_ans哪一位 ,注意ans是高位在前, t_ans是高位在后的 */ ;j>=;j--){ t_ans[tpos]+=ans[j]*ans[i]; ){ /*进位, 这个进位应该进一位就可以了,没有必要再向前推了,因为某一位算出来的最大也到不了100(?) */ t_ans[tpos+]+=t_ans[tpos]/; t_ans[tpos]%=; } tpos++; } } ; // 统计 2500-t_ans的位数 -;i>=;i--) ) _BITS++; else break; BITS=-_BITS; //更新BITS ,j=;i>=;i--) //高位在前存到ans里去 ans[j++]=t_ans[i]; u*=; //因为是自己×自己 所以小数点后数字个数增加一倍 ){ //如果^b的b是奇数,还得再×一下初始的数即orig //ans*orig memset(t_ans,,sizeof(t_ans)); ;i>=;i--){ -i; ;j>=;j--){ t_ans[tpos]+=ans[j]*orig[i]; ){ t_ans[tpos+]+=t_ans[tpos]/; t_ans[tpos]%=; } tpos++; } } _BITS=; -;i>=;i--) ) _BITS++; else break; BITS=-_BITS; ,j=;i>=;i--) ans[j++]=t_ans[i]; u=u+origu; } } void _print(){ if(u<BITS){ ; ;i>=BITS-u;i--){ ) _del++; else break; } BITS-=_del; u-=_del; ;i<BITS-u;i++) printf("%d",ans[i]); if(u){ printf("."); for(int i=BITS-u;i<BITS;i++) printf("%d",ans[i]); } printf("\n"); } else{ ; ;i>=;i--){ ) _del++; else break; } BITS-=_del; u-=_del; printf("."); ;i<u-BITS;i++) printf("); ;i<BITS;i++) printf("%d",ans[i]); printf("\n"); } } int main(){ ){ u=; ; //删点后0 ;i>=;i--) ') ts[i]='\0'; else fg=; ;i>=;i--) //删点,统计点后数个数u origu if(ts[i]!='.') u++; else break; origu=u; ;ts[i]!='\0';i++) // 删点,点后前移 ts[i]=ts[i+]; memset(tts,,sizeof(tts)); //删前导0 ; fg=; ;ts[i]!='\0';i++) '&&fg) pos++; else fg=; ;ts[i]!='\0';i++) tts[j++]=ts[i]; BITS=origBITS=; memset(ans,-,sizeof(ans)); memset(orig,-,sizeof(orig)); ;tts[i]!='\0';i++){ //转到int数组 ans[i]=orig[i]=('); origBITS++;BITS++; } my_pow(b); //快速幂 _print(); //输出 } ; }
但是杭电这道同样的过不了,据说杭电会有00000.这样的测试数据?但是0能记成这种记法吗?还有人家明明说了R>0.0 , n>0为什么还非得找R=0N=0的特例啊,不管了,反正俺poj过了
Exponentiation POJ-1001的更多相关文章
- POJ 1001 Exponentiation(大数运算)
POJ 1001 Exponentiation 时限:500 ms 内存限制:10000 K 提交材料共计: 179923 接受: 43369 描述:求得数R( 0.0 < R < ...
- [POJ 1001] Exponentiation C++解题报告 JAVA解题报告
Exponentiation Time Limit: 500MS Memory Limit: 10000K Total Submissions: 126980 Accepted: 30 ...
- Poj 1001 / OpenJudge 2951 Exponentiation
1.链接地址: http://poj.org/problem?id=1001 http://bailian.openjudge.cn/practice/2951 2.题目: Exponentiatio ...
- POJ 1001 Exponentiation 无限大数的指数乘法 题解
POJ做的非常好,本题就是要求一个无限位大的指数乘法结果. 要求基础:无限大数位相乘 额外要求:处理特殊情况的能力 -- 关键是考这个能力了. 所以本题的用例特别重要,再聪明的人也会疏忽某些用例的. ...
- [POJ] #1001# Exponentiation : 大数乘法
一. 题目 Exponentiation Time Limit: 500MS Memory Limit: 10000K Total Submissions: 156373 Accepted: ...
- poj 1001 Exponentiation 第一题 高精度 乘方 难度:1(非java)
Exponentiation Time Limit: 500MS Memory Limit: 10000K Total Submissions: 138526 Accepted: 33859 ...
- POJ 1001 Exponentiation(JAVA,BigDecimal->String)
题目 计算实数a的n次方,具体输出格式看案例 import java.util.*; import java.math.*; public class Main { public static voi ...
- POJ 1001 Exponentiation
题意:求c的n次幂……要求保留所有小数…… 解法:一开始只知道有BigInteger……java大数+模拟.第一次写java大数……各种报错各种exception……ORZ 没有前导0和小数后面的补位 ...
- POJ 1001 Exponentiation 模拟小数幂
模拟小数幂 小数点位 pos 非零末位 e 长度 len 只有三种情况 pos > len pos < e e < pos < len #include <iostrea ...
- 【POJ 1001】Exponentiation (高精度乘法+快速幂)
BUPT2017 wintertraining(15) #6A 题意 求\(R^n\) ( 0.0 < R < 99.999 )(0 < n <= 25) 题解 将R用字符串读 ...
随机推荐
- UVa 10829 L-Gap Substrings (后缀数组+rmq)
题意:给定上一个串,问你多少种UVU这一种形式的串,其中U不为空并且V的长度给定了. 析:枚举 U 的长度L,那么U一定是经过 0 L 2L 3L .... 其中的一个,所以求两个长度反lcp,一个向 ...
- input中的disabled、readonly和hidden
最近开发项目的时候,遇到一个问题,就是我希望某个input中的值不能被修改,刚开始的时候,我想到的是disabled属性!但是,发现表单提交后,值无法传递过来! 解决方法: 可以设置其readonly ...
- 20169205实验四 Android程序设计
20169205实验四 Android程序设计 实验内容及步骤 (一)第一个android studio项目 android studio与eclipse的传统安卓开发有一些不同之处 android ...
- FlexBox弹性盒布局
网页布局(layout)是 CSS 的一个重点应用. 布局的传统解决方案,基于盒状模型,依赖 display 属性 + position属性 + float属性.它对于那些特殊布局非常不方便,比如,垂 ...
- ZOJ3708:Density of Power Network
The vast power system is the most complicated man-made system and the greatest engineering innovatio ...
- SQLServer中数据加密方法
对SQLServer中的数据进行加密,有三种方法, 1. 在程序语言中先对数据进行加密后再把加密后的数据保存在SQLServer数据库中: 2. 利用SQLServer未公开的加密密码函数,在SQ ...
- python 中为什么不需要重载
函数重载主要是为了解决两个问题. (1)可变参数类型. (2) 可变参数个数. 另外,一个基本的设计原则是,仅仅当两个函数除了参数类型和参数个数不同以外,其功能是完全相同的,此时才使用函数重载,如果两 ...
- [ruby]rubyGem出现ERROR: Could not find a valid gem时的处理方法
场景: 想安装SASS的时候,打开cmd,输入gem install sass的时候却出现了: ERROR: Could not find a valid gem 'sass' (>= 0), ...
- 浏览器兼容性随手记:Javascript
1.event IE9以下不支持直接获取event对象,所以需要写兼容: var event = event?event:window.event; IE8以下不支持event.target,但是可以 ...
- 62 不同路径 leetcode JAVA
题目: 一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为“Start” ). 机器人每次只能向下或者向右移动一步.机器人试图达到网格的右下角(在下图中标记为“Finish”). 问 ...