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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
· 【译】Visual Studio 中新的强大生产力特性
· 2025年我用 Compose 写了一个 Todo App