刷题日记——由浅入深的大数加法(高精度加法)

例题

在这里插入图片描述

代码

#include <cstdio>int main(){long long a,b;scanf("%lld %lld",&a,&b);printf("%lld\n",a+b);}

例题——高精度加法

编程计算:1234567891234567891212121+1231212121212121212121222222111112121=?

分析

加法步骤

1. 将输入的两行数字当作字符串
2. 初始化三个数组,要求数组的每个元素都是0,以便存储字符串的每一位值
3. 将两个字符串的每一位都转成数字,然后倒序存入数组中(个位对齐)
4. 根据最长字符的长度确定计算次数:两个数组从0到最长数组的长度进行相同序号元素的加法,和存入第三个数组的对应序号中
5. 对第三个数组进行调整,如果值超过或等于10,那么就让下一序号的元素加上十位数字,当前序号取模10的值
6. 倒序输出调整后的数组,注意,如果两个数产生进位就要让倒序输出的开始位置后移一位

遇到的深坑

这题由于对C++初始化内存分配不理解导致很长时间没有做出来,经过学习明白了C++的初始化原理:

  • main函数中定义的临时变量存储在内存的栈中,不赋初值时默认为脏数
  • new声明的变量存储在内存的堆中,不赋初值时默认为脏数
  • 声明的全局变量存储在内存的全局/静态存储区中,不赋初值时默认为0
C++初始化总结:

在C++中,不同存储位置的变量在初始化时会有不同的行为:

  1. 堆中的变量(使用new操作符动态分配的):

    • 对于基本数据类型(如int, char, float, double等),如果没有显式初始化,它们的内容是未定义的。这意味着它们可能包含任何值,这取决于分配内存时的状态。
    • 对于类类型的对象,如果没有显式调用构造函数,编译器会尝试调用默认构造函数(如果存在的话)。如果没有定义默认构造函数,编译器会报错。
  2. 全局/静态存储区的变量

    • 对于基本数据类型,全局变量和静态变量在程序开始执行之前会被自动初始化为0(对于数值类型)或者空字符(对于char类型)。
    • 对于类类型的全局变量和静态变量,如果提供了默认构造函数,该构造函数会被用来初始化变量。如果没有提供默认构造函数且没有显式初始化,编译器会报错。
  3. 栈中的变量(局部变量):

    • 对于基本数据类型,局部变量如果没有显式初始化,则它们的值是未定义的。这意味着它们可能包含任何值,这取决于函数被调用时栈的状态。
    • 对于类类型的局部变量,如果没有显式调用构造函数且没有提供默认构造函数,编译器会报错。如果提供了默认构造函数,那么对象会使用默认构造函数进行初始化。

总结:

  • 堆中的变量和栈中的基本数据类型变量如果没有显式初始化,则它们的值是未定义的。
  • 全局/静态存储区的变量无论基本数据类型还是类类型,都会被自动初始化为默认值(对于基本数据类型是0或空字符,对于类类型是调用默认构造函数)。
  • 类类型的变量(无论在哪个存储区)如果没有定义默认构造函数且没有显式初始化,编译器会报错。

为了编写健壮且可维护的代码,建议总是显式初始化你的变量,无论是全局的、静态的、堆上的还是栈上的。这可以避免潜在的运行时错误和难以调试的问题。

高精度加法代码

#include <cstdio>
#include <map>
#include <string>
#include <string.h>
#include <cmath>
#include <vector>
#include <algorithm>
#include <stack>
#include <queue>
#include <set>
#include <limits.h>
#include <iostream>
using namespace std;int main(){string s1,s2;char str1[200],str2[200];int num_1[200]={0};int num_2[200]={0};int num_3[200]={0};//fgets(str1,200,stdin);//fgets(str2,200,stdin);scanf("%s ",str1);scanf("%s",str2);s1 = str1;s2 = str2;//getline(cin,s1);//getline(cin,s2);for(int i=0;i<s1.size();i++){num_1[s1.size()-i-1]=str1[i]-'0';}for(int i=0;i<s2.size();i++){num_2[s2.size()-i-1]=str2[i]-'0';}int len = max(s1.size(),s2.size());for(int i=0;i<len;i++){num_3[i] = num_1[i]+num_2[i] ;}for(int i=0;i<len;i++){if(num_3[i]>=10){num_3[i+1] = num_3[i+1] + num_3[i]/10;num_3[i] = num_3[i]%10;}}if(num_3[len]!=0){len++;}for(int i =len-1;i>=0;i--){printf("%d",num_3[i]);}printf("\n");return 0;
}

例题——计算Sn(北京大学机试)

在这里插入图片描述

分析

用递归

代码

#include <cstdio>
#include <map>
#include <string>
#include <string.h>
#include <cmath>
#include <vector>
#include <algorithm>
#include <stack>
#include <queue>
#include <set>
#include <limits.h>
#include <iostream>
using namespace std;unsigned long long caculate(int a,int n){if(n==1){return a;}return a+10*caculate(a,n-1);
}int main(){int a,n;scanf("%d%d",&a,&n);unsigned long long sum=0;for(int i=1;i<=n;i++){sum+=caculate(a,i);}printf("%lld",sum);return 0;
}

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

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

相关文章

来个自定义的电子木鱼吧

<!DOCTYPE html> <html><head><meta charset"utf-8"><meta name"viewport" content"widthdevice-width, initial-scale1"><title>自定义木鱼</title> </head> <body style"background-…

题目:小怂爱水洼(蓝桥OJ 4234)

问题描述&#xff1a; 解题思路&#xff1a; 记录每个格子的水量&#xff0c;再比较找最大水量。计算水量使用dfs。 注意点&#xff1a;属于同一个水洼的每个格子&#xff0c;只需要计算一次dfs就好了&#xff0c;因为每个格子的dfs都相同 。 代码&#xff1a; #include <b…

VLAN间路由

部署了VLAN的传统交换机不能实现不同VLAN间的二层报文转发&#xff0c;因此必须引入路由技术来实现不同VLAN间的通信。VLAN路由可以通过二层交换机配合路由器来实现&#xff0c;也可以通过三层交换机来实现&#xff1b; VLAN间通讯限制 每个VLAN都是一个独立的广播域&#xff…

如何获取 Microsoft 365 Copilot

您已观看视频&#xff0c;也听到了相关讨论&#xff0c;您迫不及待地想要使用 Microsoft 365 Copilot。但在哪里可以找到它&#xff1f;何时可以使用它&#xff1f;本文提供详细信息。 可以执行哪些操作&#xff1f; Microsoft 365 Copilot 将无缝集成在用户每天使用的应用当…

rust 面向对象编程特性、模式与模式匹配、高级特征

面向对象编程OOP 学习了结构体、枚举&#xff0c;它们可以包含自定义数据字段&#xff0c;也可以定义内部方法&#xff0c;它们提供了与对象相同的功能。 面向对象的四大特征&#xff1a;封装、继承、多态 通过pub标记为公有的结构体&#xff0c;在其他模块中可以访问使用这…

红黑树平衡艺术:最大化与最小化红色结点比值的策略与实现

红黑树平衡艺术&#xff1a;最大化与最小化红色结点比值的策略与实现 一、 最大比值的红黑树构造1.1 伪代码示例&#xff1a;1.2 C代码示例&#xff1a; 三、最小比值的红黑树构造3.1 伪代码示例&#xff1a;3.2 C代码示例&#xff1a; 四、结论 红黑树是一种自平衡的二叉搜索树…

云知识库真的对企业很重要,提高工作效率的利器!

在今天的信息化时代&#xff0c;大数据、人工智能和机器学习等科技概念席卷各行各业。而作为这些潮流中不可忽视的一环&#xff0c;云知识库也越来越受企业们的青睐。云知识库&#xff0c;简单来说&#xff0c;就是在云端存储、管理和检索企业数据资讯的一种服务。那么云知识库…

真--开源个人收款系统方案--部署方案

继上文:真--个人收款系统方案,今天主要推出部署方案 1.下载源码 首先需要下载源码,源码地址:PayServer: 个人收款系统方案 - Gitee.com 并且pip下载依赖库: Flask2.5.1 Flask-Cors3.0.10 gevent23.6.0 websockets10.9 urllib31.26.1 2.修改配置 路径下有两个py文件&#xf…

Docker简单介绍、特点、与虚拟机技术的区别、核心概念及在CentOS 7 中安装卸载Docker

目录 一、什么是Docker 二、特点 三、Docker与虚拟机技术的区别 四、Docker的核心概念 Docker仓库与仓库注册服务器的区别 五、CentOS7在线安装Docker 安装配置 卸载 一、什么是Docker Docker是一个开源的容器化平台&#xff0c;用于打包、部署和运行应用程序。它利用…

【airtest】自动化入门教程(四)Poco元素定位

目录 一、基础操作 1、通过属性名等方式 2、通过属性组合 3、子节点方式 4、子节点加属性组合方式 5、孙节点offspring 6、兄弟节点sibling 7、父节点parent 8、正则表达式 9、直到某个元素出现 10、直到某个元素消失 二、通过局部坐标定位 1、使用局部坐标系的cli…

电商系列之风控安全

> 插&#xff1a;AI时代&#xff0c;程序员或多或少要了解些人工智能&#xff0c;前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站。 坚持不懈&#xff0c;越努力越幸运&#xff0c;大家…

【Spring进阶系列丨第七篇】Spring框架新注解分类及详解

文章目录 一、Spring新注解1.1、Configuration注解1.1.1、定义一个类1.1.2、使用Configuration注解修饰类1.1.3、作用 1.2、Bean注解1.2.1、定义bean1.2.2、在主配置类中注册bean1.2.3、测试容器中是否有该bean1.2.4、注册bean的同时可以指定bean名称1.2.5、补充内容1.2.5.1、案…

JAVA IO流学习

File类&#xff1a; File类是java.io包中很重要的一个类 File类的对象可以代表一个文件或者目录&#xff0c;可以修改文件大小、文件最后修改日期、文件名等 File对象不能操作文件的具体数据&#xff0c;即不能对文件进行读和写的操作 File的构造方法&#xff1a; File&…

什么时候外部依赖接口慢拖死应用?

A应用调用B应用&#xff0c;当B应用的接口响应耗时平均都在3000ms的时&#xff0c;如果当前A调用B的请求数达300/s 那么在3s内A应用在途的请求数 300 * 3 900 &#xff0c;按照servlet原理一个http的请求需要一个线程提供服务&#xff0c;即需要900个线程提供服务&#xff0c…

政安晨【AIGC实践】(一):在Kaggle上部署使用Stable Diffusion

目录 简述 开始 配置 执行 安装完毕&#xff0c;一键运行 结果展示 政安晨的个人主页&#xff1a;政安晨 欢迎 &#x1f44d;点赞✍评论⭐收藏 收录专栏: 人工智能数字虚拟世界实践 希望政安晨的博客能够对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提…

MySQL中的redo log 和 undo log

undo log和redo log 先引入两个概念&#xff1a; 当我们做了一些操作 (update/delete/insert)&#xff0c;提交事务后要操作MySql中的数据。 为了能够提升性能&#xff0c;引入了两块区域&#xff1a;内存结构和磁盘结构。 磁盘结构&#xff1a; 主要存储的就是数据页&#x…

【C语言基础】:文件操作详解(前篇:准备知识)

文章目录 一、什么是文件以及文件的分类1.1 程序文件1.2 数据文件1.3 文件名 二、文本文件和二进制文件2.1 数据在文件中的存储 三、文件的打开和关闭3.1 流和标准流3.1.1 流3.1.2 标准流 3.3 文件指针3.5 文件的打开和关闭 一、什么是文件以及文件的分类 文件是指存储在计算机…

编程新手必看,学习python中字符串数据类型内容(8)

1、 Python3 字符串 字符串是 Python 中最常用的数据类型。我们可以使用引号( ’ 或 " )来创建字符串。 创建字符串很简单&#xff0c;只要为变量分配一个值即可。例如&#xff1a; var1 Hello World! var2 "Runoob"Python 访问字符串中的值 Python 不支持单…

Linux(centos7)部署spark

Spark部署模式主要有4种&#xff1a;Local模式&#xff08;单机模式&#xff09;、Standalone模式&#xff08;使用Spark自带的简单集群管理器&#xff09;、Spark On Yarn模式&#xff08;使用YARN作为集群管理器&#xff09;和Spark On Mesos模式&#xff08;使用Mesos作为集…

机器学习模型——关联规则

目录 关联规则 - 基本概念 关联规则的挖掘步骤: Apriori算法 Apriori算法简介&#xff1a; Apriori算法举例&#xff1a; Apriori算法优缺点&#xff1a; Apriori算法应用 FP-growth算法&#xff1a; FP-growth算法简介&#xff1a; FP-growth的数据结构&#xff1a; …