1 条题解

  • 0
    @ 2025-10-10 15:45:57

    C :

    #include<stdio.h>
    #include<stdlib.h>
    #include<string.h>
    int x[1001],y[1001],z[1001];
    int main(){
    	char a[1001],b[1001];
    	scanf("%s%s",&a,&b);
    	//strcmp(a,b) 判断两个字符串是否相等,相等则为0 
    	if(strcmp(a,"0")==0){
    		printf("%s",b);
    		return 0;
    	}else if(strcmp(b,"0")==0){
    		printf("%s",a);
    		return 0;
    	}
    	int alen = strlen(a); 
    	int blen = strlen(b);
    	int i,k=0,p=0;
    	for(i=alen-1;i>=0;i--){
    		x[k]  = a[i]-'0';
    		k++;
    	}
    	for(i=blen-1;i>=0;i--){
    		y[p]  = b[i]-'0';
    		p++;
    	}
    	int n = alen;
    	if(n<blen)  n= blen;
    	int f = 0;
    	for(i=0;i<n;i++){
    		z[i] = x[i] + y[i] + f;
    		if(z[i]>=10){	
    			f = 1;
    		}else{
    			f = 0;
    		}
    		z[i] = z[i]%10;
    	}
    	if(f==1) z[i] = 1;
    	int j = n;
    	for(i=n;i>=0;i--){
    		if(z[i]!=0){
    			j = i;
    			break;
    		}
    	}
    	for(i=j;i>=0;i--){
    		printf("%d",z[i]);
    	}
    	return 0;
    }
    
    

    C++ :

    #include <bits/stdc++.h>
    using namespace std;
    
    int main(){
    	
    	//开始编写程序
    	string s1,s2;//s1 s2代表2个要运算的数
    	//数组定义时不赋值,值是未知数,如果定义的时候赋值,但赋值元素个数不够,默认补充0
    	//用这个特性初始化数组都为0 
    	int a[250] = {0},b[250] = {0},r[250] = {0}; 
    	int len,i,j;
    	getline(cin,s1); 
    	getline(cin,s2);
    	//得到较长的字符串的长度,按照这个长度运算,短的要在前面补0(相当于倒过来后面补0) 
    	len = s1.length() > s2.length()?s1.length():s2.length();
    	 
    	//倒过来将字符串存入数组再运算,注意字符要转化为实际的整数
    	for(i = 0;i < s1.length();i++){
    		a[i] = s1[s1.length() - i - 1] - 48;
    	} 
    	
    	for(i = 0;i < s2.length();i++){
    		b[i] = s2[s2.length() - i - 1] - 48;
    	} 
    	
    	//a b数组按照较长的长度,逐位运算
    	for(i = 0;i < len;i++){
    		r[i] = a[i] + b[i];
    	} 
    	
    	//r数组逐位进位 
    	for(i = 0;i < len;i++){
    		r[i + 1] = r[i + 1] + r[i] / 10; 
    		r[i] = r[i] % 10;
    	} 
    	
    	//倒过来从第一个非0开始输出r数组
    	//r数组的长度最多是len + 1
    	if(r[len] != 0) len++;
    	for(i = len - 1;i >= 0;i--) {
    		cout<<r[i];
    	}
    }
    

    Pascal :

    var
      s1,s2:string;
      a,b:array[1..10000] of longint;
      i,j,k,ii,jj:longint;
    begin
      readln(s1);
      readln(s2);
      ii:=length(s1);
      jj:=length(s2);
      if ii>jj then j:=ii
               else j:=jj;
      k:=0;
      for i:=ii downto 1 do
      begin
        k:=k+1;
        a[k]:=ord(s1[i])-ord('0');
      end;
      k:=0;
      for i:=jj downto 1 do
      begin
        k:=k+1;
        b[k]:=ord(s2[i])-ord('0');
      end;
      for i:=1 to j do
      begin
        a[i]:=a[i]+b[i];
        if a[i]>10 then begin
     		      a[i]:=a[i]-10;
    		      a[i+1]:=a[i+1]+1;
    		    end;
      end;
      if a[i+1]=0 then j:=j-1;
      for i:=j+1 downto 1 do write(a[i]);
    end.
    
    

    Java :

    import java.util.ArrayList;
    import java.util.List;
    import java.util.Scanner;
    
    
    public class Main {
    	public static void main(String[] args) {
    		Scanner sc=new Scanner(System.in);
    		String[] st1=sc.nextLine().split("");
    		String[] st2=sc.nextLine().split("");
    		List<Integer> s1=new ArrayList<Integer>();
    		List<Integer> s2=new ArrayList<Integer>();
    		for(int i=st1.length-1;i>=0;i--){
    			if(!st1[i].equals("")){
    				s1.add(Integer.parseInt(st1[i]));
    			}
    		}
    		for(int i=st2.length-1;i>=0;i--){
    			if(!st2[i].equals("")){
    				s2.add(Integer.parseInt(st2[i]));
    			}
    		}
    		if(s1.size()>=s2.size()){
    			for(int i=0;i<s2.size();i++){
    				s1.set(i, s1.get(i)+s2.get(i));
    			}
    			for(int i=0;i<s1.size()-1;i++){
    				int n1=s1.get(i);
    				int n2=s1.get(i+1);
    				if(n1>=10){
    					s1.set(i, n1-10);
    					s1.set(i+1, n2+1);
    				}
    			}
    			if(s1.get(s1.size()-1)>=10){
    				s1.set(s1.size()-1, s1.get(s1.size()-1)-10);
    				s1.add(1);
    			}
    			for(int i=s1.size()-1;i>=0;i--){
    				System.out.print(s1.get(i));
    			}
    		}else{
    			for(int i=0;i<s1.size();i++){
    				s2.set(i, s1.get(i)+s2.get(i));
    			}
    			for(int i=0;i<s2.size()-1;i++){
    				int n1=s2.get(i);
    				int n2=s2.get(i+1);
    				if(n1>=10){
    					s2.set(i, n1-10);
    					s2.set(i+1, n2+1);
    				}
    			}
    			if(s2.get(s2.size()-1)>=10){
    				s2.set(s2.size()-1, s2.get(s2.size()-1)-10);
    				s2.add(1);
    			}
    			for(int i=s2.size()-1;i>=0;i--){
    				System.out.print(s2.get(i));
    			}
    		}
    	}
    }
    
    

    Python :

    print(int(input())+int(input()))
    
    • 1

    信息

    ID
    250
    时间
    1000ms
    内存
    256MiB
    难度
    (无)
    标签
    递交数
    0
    已通过
    0
    上传者