2的N次方 【转】

简介: 题目的链接为:http://acm.njupt.edu.cn/acmhome/problemdetail.do?&method=showdetail&id=1009 题目为: 2的N次方 时间限制(普通/Java):1000MS/3000MS          运行内存限制:65536KByte 描述 编程精确计算2的N次方。

题目的链接为:http://acm.njupt.edu.cn/acmhome/problemdetail.do?&method=showdetail&id=1009
题目为:
2的N次方
时间限制(普通/Java):1000MS/3000MS          运行内存限制:65536KByte
描述
编程精确计算2的N次方。(N是介于100和1000之间的整数)。
输入
正整数N (100≤N≤1000)
输出
2的N次方
样例输入
200
样例输出
1606938044258990275541962092341162602522202993782792835301376

很明显,这个不能直接算...要用数组模拟计算和进位...是属于大数处理题目的一种。
我们用arr这个长度为2000的数组来存储结果。
对于每次乘2,从最后一位开始,乘2,如果有进位,那么此位的值为乘积%10;前面的数,乘2后,判断后面是否有进位,有进位那么加1,再判断此位是否有进位。
从后位遍历到第一位,即可以得到最终结果。
代码如下:

 1 #include<iostream>   
 2 #define MAXNUM 2000   
 3 using namespace std;   
 4 int arr[MAXNUM];   
 5 int main()   
 6 {   
 7   int n,index;   
 8   cin>>n;   
 9   //大数乘法   
10   index=0;   
11   for(int i=0;i<MAXNUM;i++)   
12   {   
13      arr[i]=0;    
14   }    
15   arr[0]=2;   
16   for(int i=1;i<n;i++)   
17   {   
18      int jinwei=0;   
19      for(int j=0;j<=index;j++)   
20      {   
21          int temp=1;   
22          if(j==0)   
23          {   
24               temp=arr[j]*2;   
25               if(temp>=10)   
26               {   
27                   jinwei=1;   
28               }   
29          }    
30          else  
31          {   
32               temp=arr[j]*2;   
33               if(jinwei==1)   
34               {   
35                  temp=temp+1;    
36               }   
37               if(temp>=10)   
38               {   
39                   jinwei=1;   
40               }   
41               else  
42               {   
43                   jinwei=0;    
44               }   
45          }   
46          arr[j]=temp%10;   
47      }   
48      if(jinwei==1)   
49      {   
50           index++;   
51           arr[index]=1;   
52      }   
53   }    
54   for(int i=index;i>=0;i--)   
55   {   
56      cout<<arr[i];    
57   }   
58   cout<<endl;   
59      
60   system("pause");    
61   return 0;   
62 } 

原文链接:http://blog.csdn.net/rongyongfeikai2/article/details/7588295

相关文章
|
4月前
|
C++
3 的幂(C++)
3 的幂(C++)
51 0
|
4月前
|
C++
2 的幂(C++)
2 的幂(C++)
42 1
|
4月前
|
C++
4的幂(C++)
4的幂(C++)
37 0
|
12月前
|
存储 C++
求2的N次幂(C++)解决高精度运算
求2的N次幂(C++)解决高精度运算
220 0
|
机器学习/深度学习
1208:2的幂次方表示
1208:2的幂次方表示
129 0
|
机器学习/深度学习
1170:计算2的N次方
1170:计算2的N次方
115 0
35.数值的整数次方
给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方
45 0
35.数值的整数次方
|
前端开发 JavaScript 程序员
数值的整数次方
数值的整数次方
数值的整数次方
076.计算高次方数的尾数
076.计算高次方数的尾数
112 0