c++习题28-计算2的N次方

news2024/12/23 18:01:51

目录

一,题目

二,思路

三,代码


一,题目

描述

任意给定一个正整数N(N<=100),计算2的n次方的值。

输入描述

输入一个正整数N。

输出描述

输出2的N次方的值。

用例输入 1 

5

用例输出 1 

32

二,思路

以2为底的指数如下: 

n    2^{n}
0    1
1    2
2    4 
3    8
4   16
5   32
6   64
7   128
8   256
9   512
10 1024
.
.
.

  1. 可以看到,只有当次数 n 为 0 时 2 的 0 次 方 结果为 1(1不是2的倍数),接下来的结果全是2的倍数(可以用与2有关的表达式计算出来),因此,可以将n=0时的这一项作为特殊项:如果n=0,那么直接输出结果1。
  2. 如果n是大于>=1的数,那么就可以使用迭代的方法来计算结果:
    要想最后可以输出结果,就得需要定义一个变量来存储程序运行过程中的结果值
    ·  这里我使用了整型的vector容器,因为2的n次方数可能超出标准数据类型的范围,所以可以使用的数据类型有string类和vector容器,这两个数据类型都有很大的空间,由于计算过程需要不断的将结果值的每一位×2,因此,string类排除掉(也可以用,需要的过程会较多)。
    ·  由于n==0时的值已经输出,n>0的结果就可以以2为初始值,整型元素2只占一位,因此,在定义声明vector容器(vector<int> r;) 并指定元素个数 1 和元素值 2 时,需要如下写:

    vector<int> r (1,2);//表示目前该容器只有1个值为1的整型元素

    需要注意:
    因为vector容器和string类一样,都可以扩容,如果计算出的结果位数不止一位,例如当n=4时,2^{4}=16,此时vector容器需要扩容,来存储两个元素:整型 1和整型6,vector容器和string类一样,可以通过 push_back() 函数在末尾添加元素),所以不用担心像2^{4}=16,这些超过了1个元素的值存不进去。
  3. 当计算结果的初始值=2,输入的整数为n=4时,只需要执行3次就可以得到2^{4}的结果,如下:
    一次  2*2=4
    两次  4*2=8
    三次  8*2=16
    因此,在写最外层for循环的时候,需要将循环次数设为n-1,既for(int i=0;i<n-1;i++)
  4. 有了最外层的for循环来确保计算次数后,就需要写一个内层循环(主要是将上一次计算的结果中的每一位都乘2再加上进位 c 例如,数字容器中的16,在计算的过程中会先将第一位1 乘 2 加上 进位 0,接着再去将6 乘 2 加上进位 0 得到 12,,之后迭代出新的结果,因此,循环次数设置为上一次迭代结束后的vector容器变量r的大小,既for(int j=0;j<r.size();j++)例如,当输入的次数n=4时,2^{4}=2^{3}*2=8*2=16
    是通过2^{3}=8再乘2迭代出来,由于不能一次性将1和6这两个元素同时放入容器变量 r 中,所以需要进行两步操作:
    1)由一个元素 8 到两个元素  61 :2^{4}=2^{3}*2=8*2=16
    ① 先将8乘2,得到结果 x =r[0]*2+c=16,因为 c 存储的是进位,需要将变量 c 定义在外层循环 和 内层循环之间,并且,在每一次的运算中,将c 的初始值设为0,清空上一次运算的进位。
    ② 变量 x是处理上一次计算结果的每一位,需要定义在内层循环里面(内层循环对数位进行操作),之后将 x 的 个位数放入容器变量 r 中(既r[j]=x%10+c;) ,现在容器 r 中的元素从8变成了6
    ③接着再处理剩下的1,1在16中,是在十位上的数,因此,将x整除10一次就可以得到十位上的数,并使用变量 c 存储。如下图👇

    2)由两个元素 16 到两个元素23 :2^{5}=2^{4}*2=16*2=32,如下图👇
  5. 容器 r 和数组一样,下标也是从0开始,最后一个元素的下标为
    r.size()-1
    最后使用for循环倒叙输出容器 r  即可,

三,代码

#include <bits/stdc++.h>
using namespace std;
int main()
{ 
    int n;	
    cin>>n;
    if(n==0) cout<<1;
    vector<int> r(1,2);
    for(int i=0;i<n-1;i++){
    	int c=0;
    	for(int j=0;j<r.size();j++){
    		int x=r[j]*2+c;
    		r[j]=x%10;
    		c=x/10;
		}
		while(c){
			r.push_back(c%10);
			c/=10;
		}
    	
	}
	for(int i=r.size()-1;i>=0;i--){
		cout<<r[i];
	}
	return 0;
}

有问题请在评论区留言或者是私信我,回复时间不超过一天。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2092081.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【python入门到精通专题】1.知识与环境准备

小节目标: 计算机基础知识了解编程语言python安装与卸载pycharm安装与卸载终端的使用 一.计算机基础 程序员要想让计算机工作&#xff0c;必须知道计算机能干什么&#xff0c;怎么干的&#xff0c;这也就是我们必须学习计算机基础的原因 1.硬件系统 理解方式: 你通过耳朵和…

英文文献翻译工具推荐哪个?高效学习新选择

在学习英语的旅途中&#xff0c;我们难免会遇到难以理解的词汇、句子或整篇文章。 这时&#xff0c;一款优秀的英文文献翻译软件就显得尤为重要。它不仅能助你一臂之力&#xff0c;还能让你的学习过程更加高效。 本文将为你推荐五款英文文献翻译软件免费版&#xff0c;它们将…

【十滴水 / 4】

题目 代码 #include <bits/stdc.h> using namespace std; const int N 3e510; unordered_map<int, int> mp; int c, m, n; int res; struct grid{int l;int r;int pos;int val;bool explode;bool const operator < (const grid& a){return pos < a.pos…

【JDBC】DAO和增删改查通用方法 | 案例

九、DAO和增删改查通用方法 DAO&#xff1a;Data Access Object访问数据信息的类和接口&#xff0c;包括了对数据的CRUD&#xff08;Create、Retrival、Update、Delete&#xff09;&#xff0c;而不包含任何业务相关的信息 作用&#xff1a;为了实现功能的模块化&#xff0c;…

【推荐100个unity插件之30】只需拖放即可实现Unity UI动画——AnimationUI插件的视野

地址 github&#xff1a;https://github.com/DhafinFawwaz/Unity-AnimationUI gitee&#xff1a;https://gitee.com/xiangyuphp/Unity-AnimationUI 介绍 AnimationUI是一个统一的工具&#xff0c;可以轻松创建UI动画&#xff0c;无需代码。您可以简单地拖放来创建一些平滑的…

鸿蒙开发5.0【基于Swiper的页面布局】

场景一&#xff1a;Swiper页面支持自定义动画 方案&#xff1a; 给Swiper组件设置.nextMargin(50).prevMargin(50)属性。 给Swiper组件添加onChange事件&#xff0c;设置当前this.currentIndexindex&#xff0c;当currentIndex为首页或者尾页时&#xff0c;设置上一张以及下一…

“喂饭级”教程!建筑AI生成设计Stable Diffusion看这篇就够了!

前言 你最近是否看过这样的“魔法案例”&#xff0c;由一张简单的SU体块图片&#xff0c;快速生成多个设计方案&#xff0c;就像这样&#xff1a; ©绘图空间 而看过之后&#xff0c;你是否也在心里想着——“教练&#xff01;我要学这个&#xff01;” 今天我们就将带你…

YOLOv7输出层之间的热力图

我们经常看到一些论文里绘制了不同的热力图&#xff0c;来直观的感受其模型的有效性。特别是使用了注意力模块的网络&#xff0c;热力图就可以验证注意力机制是否真正聚焦到了预期的重要特征上&#xff0c;以便对模型的有效性和合理性进行评估。 例如Centralized Feature Pyra…

青蛙跳台阶与汉诺塔问题

hello&#xff0c;各位小伙伴们上次我们复习了C语言小tip之函数递归&#xff0c;这次我们来使用函数递归来完成青蛙跳台阶和汉诺塔问题&#xff01; 青蛙跳台阶问题 青蛙跳台阶问题&#xff1a;一只青蛙跳n阶台阶&#xff0c;一次可以跳1阶或者两阶&#xff0c;问有多少种情况…

【精选】基于Hadoop的热点事件分析的设计与实现(全网最新定制,独一无二)

博主介绍&#xff1a; ✌我是阿龙&#xff0c;一名专注于Java技术领域的程序员&#xff0c;全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师&#xff0c;我在计算机毕业设计开发方面积累了丰富的经验。同时&#xff0c;我也是掘金、华为云、阿里云、InfoQ等平台…

Ubuntu 24.04 LTS源码安装doccano

引言 doccano是一款面向机器学习从业者的开源数据标记工具。您可以使用 doccano 执行不同类型的标记任务&#xff0c;支持多种数据格式。要了解 doccano 的功能&#xff0c;请试用doccano 演示版。 1.软件下载 git clone https://github.com/doccano/doccano.git cd doccano …

python学习——爬虫之session请求处理cookie

import requestssessionrequests.session() url"https://passport.17k.com/ck/user/login" data{"loginName": "19139186287","password":"2001022600hzk"} ressession.post(url,datadata) print(res.text)# session通过会话…

vue-创建项目、工程

安装node.js 自己百度 安装vue-cli 在cmd 命令行窗口输入 npm install --global vue-cli,vue-cli是创建脚手架的工具 安装完成之后&#xff0c;输入 vue -V 查看版本号,出现版本号说明安装成功 创建vue项目 默认创建 首先创建一个test测试文件夹 然后在文件内的地址栏输入…

Kimi 化身为你的私人翻译神器

在这个全球化的时代&#xff0c;无论是职场上的无缝沟通、学习资料的快速获取&#xff0c;还是日常生活中的轻松跨语言交流&#xff0c;我们都渴望拥有一个强大且便捷的翻译伙伴。Kimi&#xff0c;正是这样一位值得信赖的翻译神器。今天&#xff0c;就让我们一同探索如何高效地…

使用nvitop来监控 NVIDIA GPU 的使用情况

1.安装nvitop&#xff1a; pip install nvitop2.运行 nvitop: nvitop显示如下&#xff1a; 显示信息含义 1. 顶部信息栏 当前时间&#xff1a;显示当前的系统时间&#xff08;Sat Aug 31 16:33:03 2024&#xff09;。提示信息&#xff1a;提示可以按 h 键获取帮助或按 q 键…

论文4解析(复现):带有初速度的S形路径轨迹规划方法

论文&#xff1a;带有初速度的S形路径轨迹规划方法&#xff0c;史伟民 论文介绍了一种带有初速度的情况下进行轨迹规划的方法。 总得来说&#xff0c;是可以实现在运动过程中重新进行轨迹规划。 指数加减速&#xff1a;..... 直线型加减速&#xff1a;..... S形加减速&…

中仕公考:公务员考试缺考有影响吗?

公务员考试缺考的影响根据考试阶段的不同又所区别&#xff0c;中仕为大家介绍一下&#xff1a; 笔试阶段的缺考后果&#xff1a; 在公务员考试中&#xff0c;若考生未能按时参加笔试&#xff0c;将自动视为放弃该次考试机会。此行为不会对考生的个人信用产生任何负面效应&…

2024最新软件测试面试题(含答案解析+文档)

&#x1f345; 点击文末小卡片&#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 一、软件测试基础面试题 1、阐述软件生命周期都有哪些阶段? 常见的软件生命周期模型有哪些? 软件生命周期是指一个计算机软件从功能确定设计&#xff0c;到…

软件测试面试八股文(答案解析+文档)

&#x1f345; 点击文末小卡片&#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 一、软件测试基础面试题 1、阐述软件生命周期都有哪些阶段? 常见的软件生命周期模型有哪些? 软件生命周期是指一个计算机软件从功能确定设计&#xff0c;到…

LlamaIndex 工作流

LlamaIndex 内部提供了一个简单的工作流引擎&#xff0c;为什么要有工作流引擎&#xff1f;做过 OA 的同学都了解工作流引擎&#xff0c;工作流的优势在于模块化开发&#xff0c;把业务节点进行抽象&#xff0c;流程于业务逻辑分离&#xff0c;方便进行业务节点组装&#xff0c…