1 条题解

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

    C++ :

    #include<bits/stdc++.h>
    using namespace std;
    
    int jiahao(char s[]){
    	int x,i;
    	for (i = 0;i < strlen(s);i++){
    		if (s[i] == '+'){
    			x = i;
    		}
    	}
    	return x;
    }
    
    int num(char s[]){
    	int i,n = 0,t = 1;
        for (i = strlen(s) - 1;i >= 0;i--){
            n = n + (s[i] - 48) * t;
            t = t * 10;
        }
        return n;
    }
    
    int main(){
    	char s[1000];
    	char w[1000];
    	int n = 0,i,j,k = 0;
    	gets(s);
    	for (i = 0;i < strlen(s);i++){
    		if (s[i] >= '0' && s[i] <= '9'){
    			w[k] = s[i];
    			k++;
    			if (i == strlen(s) - 1 || s[i + 1] < '0' || s[i + 1] > '9'){
    				w[k] = '\0';
    				//cout<<w<<" "<<num(w)<<endl;
    				n = n + num(w);
    				k = 0;
    			}
    		}
    	}
    	cout<<n;
    }
    
    

    Pascal :

    var
      a,s:ansistring;
      i,j,k:integer;
      v:array[1..2000] of integer;
    procedure plus(b:ansistring;var a:ansistring);
    var
      m,n:array[1..2000] of integer;
      t:ansistring;
      la,lb,len:integer;
    begin
      la:=length(a);
      lb:=length(b);
      fillchar(m,sizeof(m),0);
      fillchar(n,sizeof(n),0);
      for i:=1 to la do m[i]:=ord(a[la-i+1])-ord('0');
      for i:=1 to lb do n[i]:=ord(b[lb-i+1])-ord('0');
      if la>lb then
        len:=la
      else
        len:=lb;
      for i:=1 to len do
        m[i]:=m[i]+n[i];
      for i:=1 to len do
       if m[i]>=10 then
        begin
          m[i+1]:=m[i+1]+m[i] div 10;
          m[i]:=m[i] mod 10;
        end;
      a:='';
      if m[len+1]<>0 then
        a:=chr(m[len+1]+ord('0'));
      for i:=len downto 1 do
       begin
         t:=chr(m[i]+ord('0'));
         a:=a+t;
       end;
    end;
    begin
      readln(s);
      v[1]:=0;
      k:=1;
      for i:=1 to length(s) do
       if s[i]='+' then
        begin
          k:=k+1;
          v[k]:=i;
        end;
      v[k+1]:=length(s)+1;
      a:='0';
      for j:=1 to k do
        plus(copy(s,v[j]+1,v[j+1]-v[j]-1),a);
      writeln(a);
    end.
    var
      a,s:ansistring;
      i,j,k:integer;
      v,p:array[1..2000] of integer;
    procedure plus(b:ansistring;var a:ansistring);
    var
      m,n:array[1..2000] of integer;
      t:ansistring;
      la,lb,len:integer;
    begin
      la:=length(a);
      lb:=length(b);
      fillchar(m,sizeof(m),0);
      fillchar(n,sizeof(n),0);
      for i:=1 to la do m[i]:=ord(a[la-i+1])-ord('0');
      for i:=1 to lb do n[i]:=ord(b[lb-i+1])-ord('0');
      if la>lb then
        len:=la
      else
        len:=lb;
      for i:=1 to len do
        m[i]:=m[i]+n[i];
      for i:=1 to len do
       if m[i]>=10 then
        begin
          m[i+1]:=m[i+1]+m[i] div 10;
          m[i]:=m[i] mod 10;
        end;
      a:='';
      if m[len+1]<>0 then
        a:=chr(m[len+1]+ord('0'));
      for i:=len downto 1 do
       begin
         t:=chr(m[i]+ord('0'));
         a:=a+t;
       end;
    end;
    procedure minus(b:ansistring;var a:ansistring);
    var
      m,n:array[1..2000] of integer;
      t:ansistring;
      la,lb,len:integer;
    begin
      la:=length(a);
      lb:=length(b);
      fillchar(m,sizeof(m),0);
      fillchar(n,sizeof(n),0);
      for i:=1 to la do m[i]:=ord(a[la-i+1])-ord('0');
      for i:=1 to lb do n[i]:=ord(b[lb-i+1])-ord('0');
      if la>lb then
        len:=la
      else
        len:=lb;
      for i:=1 to len do
       if m[i]>=n[i] then
         m[i]:=m[i]-n[i]
       else
         begin
           m[i]:=m[i]+10-n[i];
           m[i+1]:=m[i+1]-1;
         end;
      a:='';
      i:=255;
      while m[i]=0 do
        i:=i-1;
      len:=i;
      for i:=len downto 1 do
       begin
         t:=chr(m[i]+ord('0'));
         a:=a+t;
       end;
    end;
    begin
      readln(s);
      v[1]:=0;
      p[1]:=1;
      k:=1;
      for i:=1 to length(s) do
       if s[i]='+' then
        begin
          k:=k+1;
          v[k]:=i;
          p[k]:=1;
        end
       else
         if s[i]='-' then
          begin
            k:=k+1;
            v[k]:=i;
            p[k]:=0;
          end;
      v[k+1]:=length(s)+1;
      a:='0';
      for j:=1 to k do
       if p[j]=1 then
         plus(copy(s,v[j]+1,v[j+1]-v[j]-1),a)
       else
        if p[j]=0 then
          minus(copy(s,v[j]+1,v[j+1]-v[j]-1),a);
      writeln(a);
    end.
    

    Java :

    import java.util.Scanner;
    
    public class Main {
    
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		Scanner sc = new Scanner(System.in);
    		String s = sc.nextLine();
    		int sum = 0;
    		String[] b = s.split("\\+");
    		for(int i = 0;i<b.length;i++){
    			String c = b[i];
    			int a = Integer.parseInt(c);
    			sum = sum + a;
    		}
    		System.out.println(sum);
    	}
    
    }
    
    

    Python :

    a=list(map(int,input().split("+")))
    n=len(a)
    s=0
    for i in range(n):
        s=s+a[i]
    print(s)
    
    • 1

    信息

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