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用字符串读 ... 
随机推荐
- linux下的shell运算(加、减、乘、除
			linux下的shell运算(加.减.乘.除 摘自:https://blog.csdn.net/hxpjava1/article/details/80719112 2018年06月17日 16:03: ... 
- Java API使用(不断更新中)
			实例1 BigInteger的构造函数public BigInteger (String val, int radix)的使用 上面的构造函数,val是各种进制的字符串,比如二进制的110,八进制的7 ... 
- [GO]redis的连接
			package main import ( "github.com/garyburd/redigo/redis" "fmt" ) var pool *redis ... 
- pcd转obj
			文件转换 从PCD文件写入和读取点云数据:https://www.cnblogs.com/li-yao7758258/p/6435568.html 点云数据格式PCD(Point Cloud Data ... 
- Linux 基础教程 43-su和sudo命令
			在使用Linux系统中,有时候还需要做身份切换,这是为什么? 使用普通账号:系统日常操作的好习惯 虽然使用root对系统进行各种操作不受权限等方面的限制,但却存在重大的安全隐患,假如有人不 ... 
- [转]How do I run msbuild from the command line using Windows SDK 7.1?
			本文转自:http://stackoverflow.com/questions/6319274/how-do-i-run-msbuild-from-the-command-line-using-win ... 
- python面试题之如何计算一个字符串的长度
			在我们想计算长度的字符串上调用函数len()即可 >>> len('hhhhhhhhjg') 10 所属网站分类: 面试经典 > python 作者:外星人入侵 链接:http ... 
- Kubernetes 自动伸缩 auto-scaling
			使用 Kubernetes 的客户能够迅速响应终端用户的请求,交付软件也比以往更快.但是,当你的服务增长速度比预期更快时,计算资源不够时,该怎么处理呢? 此时可以很自豪地说: Kubernetes 1 ... 
- 搭建自己的 Docker 私有仓库服务
			关于 Docker 的介绍这里就省了,Docker 在其相关领域的火爆程度不亚于今年汽车行业里的特斯拉,docCloud 甚至把公司名都改成了 Docker, Inc. 好东西总是传播很快,我们现在已 ... 
- .NET Core调用WCF的最佳实践
			现在.NET Core貌似很火,与其他.NET开发者交流不说上几句.NET Core都感觉自己落伍了一样.但是冷静背后我们要也看到.NET Core目前还有太多不足,别的不多说,与自家的服务框架WCF ... 
