CSDN每日一练非负整数求和 C语言

news2024/12/23 18:38:29

题目名称:非负整数求和
时间限制:1000ms 内存限制:256M

题目描述:

给定两个字符串形式的非负整数 num1 和 num2 ,计算它们的和。 注意: - num1 和 num2 的长度都小于 5100. -
num1 和 num2 都只包含数字 0-9. - num1 和 num2 都不包含任何前导零。 - 你不能使用任何內建
BigInteger 库, 也不能直接将输入的字符串转换为整数形式。

输入描述:

输入整数num1,num2。(0<=num1,num2<=1e100)

输出描述:

输出整数num1,num2的加和。

示例:
输入:

234 222

输出:

456

思路:由于这个数可能超级大,我们就不能用简单的相加来解决了,因此我考虑每个位都占一列,存储在一个超大的数组里,然后取出来逐步相加,得到最终结果。
所需关键变量:

num1[5105]用来存储第一个加数

num1[5105]用来存储第二个加数

sum[5105]用来存储最终结果

只要我们发现该位两数相加大于或等于10,我们就向前进一,然后把对十求余所得到的数赋值给该位。
该算法本人认为比较优,如果有更好的想法,欢迎q我!
代码如下(编译器是dev,语言是C语言):

#include <stdio.h>
#include<stdbool.h>
int control = 0,num1jishu = 1,num2jishu = 1,i,j;
char temp;
int num1[5105] = {0},num2[5105] = {0},sum[5105] = {0};
int main(){
    while(true){
        scanf("%c",&temp);
        if(temp == '\n'){
            break;
        }
        if(temp == ' '){
            control = 1;
            continue;
        }
        if(control == 0){
            num1[num1jishu++] = temp - 48;
        }else{
            num2[num2jishu++] = temp - 48;
        }
    }
    i = --num1jishu;
    j = --num2jishu;
    if(i>=j){
        for(;i>0;i--){
        	if(j == 0){
            	sum[i] = sum[i] + num1[i];
        	}else{
            	sum[i] = sum[i] + num1[i] +num2[j--];
            	if(sum[i]>=10){
                	sum[i-1] += 1;
                	sum[i] = sum[i]%10;
            	}
        	}
    	}
        for(i = 0;i<=num1jishu;i++){
            if((i == 0)&&(sum[i] == 0)){
                continue;
            }
            printf("%d",sum[i]);
        }
    }else{
        for(;j>0;j--){
        	if(i == 0){
            	sum[j] = sum[j] + num2[j];
        	}else{
            	sum[j] = sum[j] + num1[i--] +num2[j];
            	if(sum[j]>=10){
                	sum[j-1] += 1;
                	sum[j] = sum[j]%10;
            	}
        	}
    	}
        for(i = 0;i<=num2jishu;i++){
            if((i == 0)&&(sum[i] == 0)){
                continue;
            }
            printf("%d",sum[i]);
        }
    }
    return 0;
}

结果如下:
在这里插入图片描述

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

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

相关文章

【圣诞节特辑】爱心代码(程序员的浪漫plus+)-李峋

2022年圣诞节到来啦&#xff0c;很高兴这次我们又能一起度过~ 唯有热爱&#xff0c;可抵岁月漫长&#xff0c;唯有热爱&#xff0c;不畏世间无常&#xff01; 一、前言 前段时间《点燃我温暖你》中李峋的爱心代码超级火&#xff0c;看着特别心动&#xff01;这不&#xff0c;圣…

贪心算法(Java版本)

一、贪心算法 1、算法描述 贪心算法&#xff08;Greedy algorithm&#xff09;&#xff0c;又叫做贪婪算法。 在对问题求解时&#xff0c;不从整体考虑&#xff0c;而是从问题的某一个初始解出发&#xff0c;每一步选择中都采取在当前状态下最好或最优的选择&#xff08;局部…

vcpkg踩坑记录

接触了vcpkg一段时间, 感觉在包管理方面确实很有帮助, 然而在使用中, 也碰到了各种各样的问题, 总结记录一下. vcpkg github: https://github.com/Microsoft/vcpkg 快速使用指南 To get started: > git clone https://github.com/Microsoft/vcpkg.git(也可以从下载地址直…

C语言—局部变量和全局变量

不同函数之间定义的变量是无法相互进行访问的&#xff1b; #include <stdio.h>void Test();int main() {int a 100;printf("%d", b); }void Test() {int b 200;printf("%d", a); } 在main函数中无法访问到Test中的变量b&#xff0c;同样&#xff…

2022吴恩达机器学习课程——第三课(非监督学习)

注&#xff1a;参考B站视频教程 视频链接&#xff1a;【(强推|双字)2022吴恩达机器学习Deeplearning.ai课程】 写在前面&#xff1a;文章只是为了记录学习课程的整个过程&#xff0c;方便以后查漏补缺&#xff0c;方便找到对应章节&#xff0c;希望看到这篇文章的同学能够认真的…

Numpy+PIL实现图片的自由旋转

1.内容简介 使用PIL和Numpy编程实现图片的自由旋转。 2.技术要点 &#xff08;1&#xff09;用Python PIL库将图片读取为NumPy 数组。 &#xff08;2&#xff09;采用旋转后图像幅面放大的图像旋转变换方式&#xff0c;根据旋转角度和原图像尺寸计算图像像素点的旋转变换矩阵…

MySQL中 java 的 JDBC 编程使用方法及驱动包的下载和使用

文章目录1.简介2.JDBC 的使用2.1 先安装对应数据库的驱动包~~2.2 把安装好的 jar 驱动包导入到项目中~~2.2.1 在项目中创建目录&#xff0c;把 jar 包拷贝进来。2.2.2 右键创建的目录3.编写数据库代码插入一个记录4.查看插入记录后的数据表5.如何编写代码实现查找操作1.简介 实…

数据库实验2 数据库安全性定义与检查

前言&#xff1a;记得验收时问了一个问题吧&#xff0c;就是用户和角色的区别是什么 实验2.1自主存取控制实验 1.实验目的 掌握自主存取控制权限的定义和维护方法。 2.实验内容和要求 定义用户、角色,分配权限给用户、角色,回收权限,以相应的用户名登录数据库验证权限分配…

分享巧记Linux命令的方法

最近有些学弟经常私信问我说&#xff0c;他们自己是Linux方面的小白&#xff0c;对于Linux的命令了解十分的少&#xff0c;虽然每次跟着我推荐的学习视频教程可以进行操作&#xff0c;但是离开了视频&#xff0c;就又是两眼抓瞎&#xff0c;什么也想不起来。不知道怎么样通过命…

【数据结构】队列与Queue接口

目录 一、队列 二、 Java里的Queue接口 1、概述 2、常用方法 1.入队 2.出队 3.获取队首元素 4、判空 三、单链表实现队列 1、准备字段 2、实现入队 3、实现出队 4、实现获取队首元素 5、实现判空 四、循环队列的实现 1、前言 2、字段准备 3、实现入队 4、实现…

一致性哈希

一、简介 这个算法是一种特殊的哈希算法&#xff0c;目的是解决分布式缓存的问题。 普通哈希算法在分布式存储具有较大的局限性&#xff0c;简单的讲就是难以扩展。 一致性哈希相对而言具有较好的容错性和可扩展性&#xff0c;更加适合现在的分布式存储。 二、经典哈希版本 …

SpringBoot+Vue项目实践课程教学管理平台

文末获取源码 开发语言&#xff1a;Java 使用框架&#xff1a;spring boot 前端技术&#xff1a;JavaScript、Vue.js 、css3 开发工具&#xff1a;IDEA/MyEclipse/Eclipse、Visual Studio Code 数据库&#xff1a;MySQL 5.7/8.0 数据库管理工具&#xff1a;phpstudy/Navicat JD…

✿✿✿JavaScript --- JSON

目录 1.JSON的简介 2.JSON的语法规则 3.JSON 字符串转换为 JavaScript 对象 4.常用的JSON相关的函数 5.JSON对象的遍历 6.补充&#xff1a;JS中的this关键字 1.JSON的简介 JSON&#xff08; JavaScript Object Notation &#xff09; 是用于存储和传输数据的格式&#xf…

Android studio配置大内存,编译速度更快!

本文使用的是windows 10系统&#xff0c;Android studio 版本是Android Studio Chipmunk | 2021.2.1&#xff08;松鼠&#xff09; 目录为什么要配置大内存&#xff1f;默认内存是多少&#xff1f;如何扩大内存配置&#xff1f;这个配置保存在哪个文件&#xff1f;文件在哪里&a…

二叉树10:二叉树的最小深度

主要是我自己刷题的一些记录过程。如果有错可以指出哦&#xff0c;大家一起进步。 转载代码随想录 原文链接&#xff1a; 代码随想录 leetcode链接&#xff1a;111. 二叉树的最小深度 题目&#xff1a; 给定一个二叉树&#xff0c;找出其最小深度。 最小深度是从根节点到最近…

Asp.Net Core实现最基本的Http服务

概述 和.NetFramework时代不同&#xff0c;Core是可以自承载的&#xff0c;也就说开发好的Web项目&#xff0c;可以打包成exe直接运行的&#xff0c;而不必放到IIS这样的环境中。接下来&#xff0c;我们写点代码&#xff0c;体验一下Asp.Net Core自带的Http功能。 初体验 所谓…

嵌入式微功耗RTU的功能与特点介绍、技术参数详情

平升电子嵌入式微功耗RTU&#xff0c;可灵活嵌入至各类仪表、传感器和工业设备中&#xff0c;定时采集设备数据并通过4G/5G/NB-IoT远传至监管软件&#xff0c;实现设备联网。 嵌入式微功耗RTU设计小巧、方便集成&#xff0c;微功耗运行&#xff0c;支持标准水资源/水文/环保/M…

Biotin-PEG-AC,Biotin-PEG-Acrylate,生物素PEG丙烯酸酯线性杂双功能PEG试剂

英文名称&#xff1a;Biotin-PEG-AC&#xff0c;Biotin-PEG-Acrylate 中文名称&#xff1a;生物素-聚乙二醇-丙烯酸酯 生物素-聚乙二醇-丙烯酸酯是一种含有生物素和丙烯酸酯的线性杂双功能聚乙二醇试剂。它是一种有用的带有PEG间隔基的交联或生物结合试剂。生物素能与亲和素和…

智创万物,数赢未来——如何助推数智时代的发展浪潮

数智化核心特征 可视化 消费者的行为可以看得见&#xff0c;生产者的行为也可以看得见。产业互联网或者消费互联网非常重要的一点就是要对消费者行为和生产者行为的可视化&#xff0c;其背后是数字化的力量。 可量化 可量化意味着企业家可以对管理流程进行改造&#xff0c;…

echarts的legend——图例样式的配置

认识图例&#xff1a; 以上几张图表中&#xff0c;红色圆圈部分即图例 echarts图表中的图例&#xff0c;有形状&#xff0c;颜色&#xff0c;位置等等各种样式的不同配置。 echarts官网配置项手册里有非常详细的内容&#xff0c;我们挑几种常用的看看&#xff0c;加深对legend属…