蓝桥杯练习1(两数逆序相加)

Posted 晨沉宸辰

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了蓝桥杯练习1(两数逆序相加)相关的知识,希望对你有一定的参考价值。

给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。
请你将两个数相加,并以相同形式返回一个表示和的链表
你可以假设除了数字 0 之外,这两个数都不会以 0 开头。
示例 1:

Python版本

import math
#头插法建立链表
class Node():
    def __init__(self, item):
        self.item = item
        self.next = None


def create_linklist_tail(li):
    head = Node(li[0])
    tail = head
    for e in li[1:]:
        node = Node(e)
        tail.next = node
        tail = node
    return head
#定义了输出格式
def create_linklist_head(li):
    head = Node(li[0])
    for e in li[1:]:
        node = Node(e)
        node.next = head
        head = node
    return head
def print_linklist(lk):
    while lk.next:
        print(lk.item, end=',')
        lk = lk.next
    print(lk.item)
str1 = input()
str2 = input()
#两个输入
li1 = []
li2 = []
for i in str1:
	if i.isdigit():
		li1.append(i)

for j in str2:
	if j.isdigit():
		li2.append(j)

demo1 = create_linklist_tail(li1)
demo2 = create_linklist_tail(li2)
i = 0
sum1 = 0
lk1 = demo1
while lk1:
	sum1=sum1+(int(lk1.item)*math.pow(10,i))
	lk1=lk1.next
	i=i+1
lk2 = demo2
i = 0
sum2 = 0
while lk2:
	sum2=sum2+(int(lk2.item)*math.pow(10,i))
	lk2=lk2.next
	i=i+1

end = sum1 + sum2
end = int(end)
string = str(end)

demo = create_linklist_head(string)

print_linklist(demo)


C语言

#include <iostream>

#include <cstdio>

#include <cstring>



using namespace std;

#define N 1000000



int a[N];

int b[N];

int ans[N];

char s[N];

int main()

   int t=0,l=0;

    scanf("%s",&s);

    for(int i=0;i<strlen(s);i++) 

      if(s[i]==',') continue;

      a[t++]=s[i]-'0';



    



    scanf("%s",&s);



    for(int i=0;i<strlen(s);i++)



      if(s[i]==',') continue;



      b[l++]=s[i]-'0';



    

    while(t<l) a[t++]=0;

    while(l<t) b[l++]=0;

    int m=0;

    for(int i=0;i<t;i++)

        ans[i]=(a[i]+b[i]+m)%10;

       m=(a[i]+b[i]+m)/10;

    

    if(m>0) ans[t++]=m;

    for(int i=0;i<t-1;i++) printf("%d,",ans[i]);

    printf("%d\\n",ans[t-1]);

    return 0;




以上是关于蓝桥杯练习1(两数逆序相加)的主要内容,如果未能解决你的问题,请参考以下文章

蓝桥杯 基础练习 杨辉三角形

蓝桥杯基础练习 高精度加法

算法笔记_062:蓝桥杯练习 最小乘积(基本型)(Java)

给定两个逆序非空链表,求链表中两数相加的和,且仍返回逆序链表

蓝桥杯每日一练—字符逆序

两数相加