美文网首页
蓝桥杯备战刷题Day02-2019/1/23

蓝桥杯备战刷题Day02-2019/1/23

作者: 咣超 | 来源:发表于2019-01-23 21:18 被阅读0次

2.

问题描述

输入两个整数ab,输出这两个整数的和。ab都不超过100位。

算法描述

由于ab都比较大,所以不能直接使用语言中的标准数据类型来存储。对于这种问题,一般使用数组来处理。

定义一个数组AA[0]用于存储a的个位,A[1]用于存储a的十位,依此类推。同样可以用一个数组B来存储b

计算c=a+b的时候,首先将A[0]与B[0]相加,如果有进位产生,则把进位(即和的十位数)存入r,把和的个位数存入C[0],即C[0]等于(A[0]+B[0])%10。然后计算A[1]与B[1]相加,这时还应将低位进上来的值r也加起来,即C[1]应该是A[1]、B[1]和r三个数的和.如果又有进位产生,则仍可将新的进位存入到r中,和的个位存到C[1]中。依此类推,即可求出C的所有位。

最后将C输出即可。

输入格式

输入包括两行,第一行为一个非负整数a,第二行为一个非负整数b。两个整数都不超过100位,两数的最高位都不是0。

输出格式

输出一行,表示a +b的值。

样例输入

20100122201001221234567890

2010012220100122

样例输出

20100122203011233454668012

这个题目和上一篇blog的题目类似不同的是这个题是给你两个数求者两个数的和 思路和上一个题是一样的下面是我的代码我用了两个字符数组用来存储输入再用一个int数组来处理两个字符数组的数相加得到的结果然后再输出

import java.util.Scanner;

public class Test5 {

public static void main(String[] args) {

Scanner scan = new Scanner(System.in);

String num1 = scan.nextLine();

String num2 = scan.nextLine();

int[][] a = strTonum(num1, num2);

str(sum(a[0],a[1]));

scan.close();

}

public static int[][] strTonum(String num1, String num2) {

int a=num1.length();

int b=num2.length();

int[] arr1 = new int[a+1];        // 这里将数组的范围扩大的原因是当两个数组的长度相同最

                          // 高位的和超过十的时候我们后面的f也就是辅助数组装不下

int[] arr2 = new int[b+1];

for(int j=0;j<a;j++) {

arr1[j]=num1.charAt(a-j-1)-'0';

}

for(int k=0;k<b;k++) {

arr2[k]=num2.charAt(b-k-1)-'0';

}

return new int[][]{arr1, arr2};

}

public static int[] sum(int[] num1, int[] num2) {

int c=0, s=0, i=0;

int[] f = new int[(Math.max(num1.length, num2.length))+5];

f = num1.length>num2.length?num1:num2;

// f是辅助数组用来装结果上一句代码的意思上将两个字符数组中长度的大的复制一份给f复制之后长度也和那个长度大的相同,其实也可以不用直接用两个字符数组中长度长的那个数组就可以了不过要扣扣边界

for(;i<(Math.min(num1.length, num2.length));i++) {

int n1=num1[i];

int n2=num2[i];

s=n1+n2+c;

c=s/10;

f[i]=s%10;

}

if(c>0) {          //  这里就是当两个字符数组的长度相同时最高为的和右大于10的时候还差的进位补齐进位

f[i]=f[i]+c;

}

return f;

}

public static void str(int[] arr) {

String str="";

int temp = 0;

for(int i=arr.length-1;i>=0;i--) {

if(arr[i]!=0) {

temp=i;

break;

}

}

while(temp>=0) {

str=str+arr[temp];

temp--;

}

System.out.println(str);

}

}

相关文章

  • 蓝桥杯备战刷题Day02-2019/1/23

    2. 问题描述 输入两个整数a和b,输出这两个整数的和。a和b都不超过100位。 算法描述 由于a和b都比较大,所...

  • 蓝桥杯真题题解收藏

    收藏一些在网上发现的,觉得写的不错的蓝桥杯真题题解内容,给学生练习备战蓝桥杯时所用。2020蓝桥杯省赛第二场C组_...

  • 蓝桥杯备战刷题Day04-2019/1/18

    4.蓝桥杯字母图形 问题描述 利用字母可以组成一些美丽的图形,下面给出了一个例子: ABCDEFG BABCDEF...

  • 蓝桥杯备战刷题Day01- 2019/1/15

    1. 问题描述 输入一个正整数n,输出n!的值。 其中n!=1*2*3*…*n。 算法描述 n!可能很大,而计算机...

  • 蓝桥杯备战刷题Day03-2019/1/17

    3. 问题描述 杨辉三角形又称Pascal三角形,它的第i+1行是(a+b)i的展开式的系数。 它的一个重要性质是...

  • 蓝桥杯备战刷题Day05-2019/1/19

    5.蓝桥杯01子串 问题描述 对于长度为5位的一个01串,每一位都可能是0或1,一共有32种可能。它们的前几个是:...

  • 蓝桥杯备战

    前不久接触到蓝桥杯,有一个蓝桥杯组委会的老师来我们学校宣讲,鼓励我们参赛,虽然是大一,但是对计算机编程很感兴趣,还...

  • 【蓝桥杯python】小白的艰难刷题之路。A+B问题

    先给大家献上蓝桥杯的练习系统,因为我是新手刷题人所以先更新一下基础练习的普通试题集。“蓝桥杯”练习系统 (lanq...

  • 蓝桥杯有感

    寒假线上学习的时候就开始为这次蓝桥杯做准备,刷算法题,看算法书,学习算法知识,这一周终于迎来了期待已久的蓝桥杯。...

  • 正经向-蓝桥杯:N个最小和

    难得的正经向题解系列,如果想要补充基础知识+AC题解的话请移步:备战CCC-优先队列还行【蓝桥杯-N个最小和】 题...

网友评论

      本文标题:蓝桥杯备战刷题Day02-2019/1/23

      本文链接:https://www.haomeiwen.com/subject/zogsjqtx.html