当前位置: 首页 > news >正文

C++信息学奥赛1170:计算2的N次方

在这里插入图片描述

#include <iostream>
#include <string>
#include <cstring>using namespace std;int main() {int n;cin >> n;  // 输入一个整数nint arr[100];memset(arr, -1, sizeof(arr));  // 将数组arr的元素初始化为-1,sizeof(arr)表示arr数组的字节大小arr[0] = 1;  // 数组第一个元素赋值为1int j;for (int i = 0; i < n; i++) {j = 0;// 将数组每个元素乘以2,直到遇到-1为止while (arr[j] != -1) {arr[j++] *= 2;}j = 0;// 处理进位while (arr[j] != -1) {// 如果当前数字大于等于10,并且下一位是-1(即没有下一位)// 则在下一位填充0,并将当前位的值除以10加到下一位上if (arr[j] >= 10 && arr[j + 1] == -1) {arr[j + 1] = 0;}arr[j + 1] += arr[j] / 10;arr[j] %= 10;j++;}}// 输出结果for (int i = j - 1; i >= 0; i--) {cout << arr[i];}return 0;
}

该程序的逻辑如下:

  1. 首先,从标准输入读取一个整数n。
  2. 创建一个大小为100的整型数组arr,并用-1进行初始化。
  3. 将arr数组的第一个元素设置为1。
  4. 使用变量j来追踪数组arr的索引。
  5. 使用循环结构,重复n次以下步骤:
    • 将j重置为0。
    • 使用while循环,将数组arr中的每个元素乘以2,直到遇到-1为止。
    • 将j重置为0。
    • 使用while循环,处理进位操作,即将大于等于10的值分配给下一位,并取余数赋值给当前位。注意边界情况的处理。
  6. 使用for循环,从高位到低位输出数组arr的元素。
  7. 程序结束。
http://www.lryc.cn/news/165486.html

相关文章:

  • windos本地文件上传到ubuntu
  • 做软件测试,掌握哪些技术才能算作“测试大佬”?
  • 【算法与数据结构】530、LeetCode二叉搜索树的最小绝对差
  • input输入事件
  • 接入 NVIDIA A100、吞吐量提高 10 倍!Milvus GPU 版本使用指南
  • php://filter协议在任意文件读取漏洞(附例题)
  • 【Redis】1、NoSQL之Redis的配置及优化
  • 9.5QTday6作业
  • Redis I/O多路复用机制
  • Matlab 2016安装MinGW-w64-4.9.2
  • Tomcat配置ssl、jar包
  • Unity中Shader实现UI去色功能的实现思路
  • Python垃圾回收机制详解:引用计数与循环垃圾收集器
  • 自然语言处理应用(三):微调BERT
  • MySQL基础【学习至基本语句】
  • Leetcode152. 连续子数组的最大乘积
  • 01_kafka_环境搭建安装_topic管理
  • Python+Requests+Excel接口测试实战
  • 10:STM32------I2C通信
  • Git多人开发解决冲突案例
  • 医疗机构如何维护电力系统?来看看这个小技巧
  • 时序预测 | MATLAB实现ELM极限学习机时间序列预测未来
  • 【数据分享】1901-2022年我国省市县镇四级的逐年平均气温数据(免费获取/Shp/Excel格式)
  • 【Axure高保真原型】日历日期原型模板
  • 深入了解接口测试:Postman 接口测试指南
  • 【ROS】Ubuntu20.04+ROS Noetic 配置PX4-v1.12.2和Gazebo11联合仿真环境【教程】
  • Java 代理模式之静态代理与动态代理
  • 打造基于终端命令行的IDE,Termux配置Vim C++开发环境
  • 【初阶C语言】操作符2---表达式求值
  • 代码随想录day50|123. 买卖股票的最佳时机 III188. 买卖股票的最佳时机 IV