前言:
如今各位老铁们对“开2次方怎么算法”大约比较关注,同学们都想要剖析一些“开2次方怎么算法”的相关文章。那么小编同时在网摘上搜集了一些关于“开2次方怎么算法””的相关内容,希望同学们能喜欢,姐妹们快快来学习一下吧!【题目描述】
任意给定一个正整数N(N<=100),计算2的n次方的值。
【输入】
输入一个正整数N。
【输出】
输出2的N次方的值。
【输入样例】
5【输出样例】
32解题思路
这个题跟基础算法-高精度除以低精度有点类似,我们可以通过循环N次乘法计算2的N次方值。我们声明一个数组a,存储每一次循环的乘法结果。循环结束,完整的答案已经存储在数组中。
参考答案
#include <iostream>using namespace std;int main(){ int N=0; cin >> N; //用于存储结果的数组,存放每次循环*2的结果,因为任何非0的0次幂都是1,所以设置a[0]=1 int a[100]={1}; //用于最后存储结果的长度 int len = 1; //对数组a进行N次循环*2,模拟2的N次方计算 for(int i=1;i<=N;i++){ //上次循环是否有进位 int carry = 0; //对上层for循环的结果进行每一位*2 for(int j=0;j<len;j++){ //计算当前位*2+进位,即当前位*2的结果,再加低位的进位 int value = a[j]*2+carry; //取余为当前位的新的数值 a[j] = value % 10; //获取下一位高位计算时的进位 carry = value / 10; //如果有进位,并且高位的值为0,说明结果长度有变化(比如,当前是64,本次循环*2后,结果为128,结果长度由2位变为3位) //此时就需要将结果长度+1,多进行一次for循环,目的是对进位位进行计算 if(carry > 0 && a[j+1] == 0){ len++; } } } //数组a大小 int size = sizeof(a)/sizeof(&a); //去掉前导0 while(a[size-1] == 0 && size>0) { size--; } //输出计算后的结果 for(int i= size-1;i>=0;i--){ cout<<a[i]; } return 0;}
版权声明:
本站文章均来自互联网搜集,如有侵犯您的权益,请联系我们删除,谢谢。
标签: #开2次方怎么算法