170 条题解

  • 128
    @ 2021-10-5 13:19:34

    尽管 A + B Problem 是十分经典的入门题目,也希望大家能够在题解区友善交流。 HydroOJ 致力于提供一个友善的交流学习平台,请不要发布误导性题解,谢谢! 您可以给您喜欢的题解投票,让更多的人看到它们。同时,题解的评分也会影响你在排名中的贡献一栏分数。

    我们认为优质的题解需要:代码高亮,简洁而有效的注解,思路清晰,便于理解,无冗长板子,不定义非常用宏。

    • 35
      @ 2021-10-13 17:00:49

      简单的入门测试题

      本题各种语言的程序写法:(不知道Hydro有没有这些语言

      C

      #include <stdio.h>
      
      int main()
      {
          int a,b;
          scanf("%d%d",&a,&b);
          printf("%d\n", a+b);
          return 0;
      }
      

      C++

      #include <iostream>
      #include <cstdio>
      
      using namespace std;
      
      int main()
      {
          int a,b;
          cin >> a >> b;
          cout << a+b << endl;
          return 0;
      }
      

      Pascal

      var a, b: longint;
      begin
          readln(a,b);
          writeln(a+b);
      end.
      

      Python2

      s = raw_input().split()
      print int(s[0]) + int(s[1])
      

      Python3

      s = input().split()
      print(int(s[0]) + int(s[1]))
      

      Java

      import java.io.*;
      import java.util.*;
      public class Main {
          public static void main(String args[]) throws Exception {
              Scanner cin=new Scanner(System.in);
              int a = cin.nextInt(), b = cin.nextInt();
              System.out.println(a+b);
          }
      }
      

      JavaScript (Node.js)

      const fs = require('fs')
      const data = fs.readFileSync('/dev/stdin')
      const result = data.toString('ascii').trim().split(' ').map(x => parseInt(x)).reduce((a, b) => a + b, 0)
      console.log(result)
      process.exit() // 请注意必须在出口点处加入此行
      

      Ruby

      a, b = gets.split.map(&:to_i)
      print a+b
      

      PHP

      <?php
      $input = trim(file_get_contents("php://stdin"));
      list($a, $b) = explode(' ', $input);
      echo $a + $b;
      

      Rust

      use std::io;
      
      fn main(){
          let mut input=String::new();
          io::stdin().read_line(&mut input).unwrap();
          let mut s=input.trim().split(' ');
      
          let a:i32=s.next().unwrap()
                     .parse().unwrap();
          let b:i32=s.next().unwrap()
                     .parse().unwrap();
          println!("{}",a+b);
      }
      

      Go

      package main
      
      import "fmt"
      
      func main() {
          var a, b int
          fmt.Scanf("%d%d", &a, &b)
          fmt.Println(a+b)
      }
      

      C# Mono

      using System;
      
      public class APlusB{
          private static void Main(){
              string[] input = Console.ReadLine().Split(' ');
              Console.WriteLine(int.Parse(input[0]) + int.Parse(input[1]));
          }
      }
      

      Visual Basic Mono

      Imports System
      
      Module APlusB
          Sub Main()
              Dim ins As String() = Console.ReadLine().Split(New Char(){" "c})
              Console.WriteLine(Int(ins(0))+Int(ins(1)))
          End Sub
      End Module
      

      Kotlin

      fun main(args: Array<String>) {
          val (a, b) = readLine()!!.split(' ').map(String::toInt)
          println(a + b)
      }
      

      Haskell

      main = do
          [a, b] <- (map read . words) `fmap` getLine
          print (a+b)
      

      Scala

      object Main extends App {
          println(scala.io.StdIn.readLine().split(" ").map(_.toInt).sum)
      }
      

      Perl

      my $in = <STDIN>;
      chomp $in;
      $in = [split /[\s,]+/, $in];
      my $c = $in->[0] + $in->[1];
      print "$c\n";
      

      文言

      施「require('fs').readFileSync」於「「/dev/stdin」」。名之曰「數據」。
      施「(buf => buf.toString().trim())」於「數據」。昔之「數據」者。今其是矣。
      施「(s => s.split(' '))」於「數據」。昔之「數據」者。今其是矣。
      注曰。「「文言尚菜,無對象之操作,故需 JavaScript 之语法」」。
      
      夫「數據」之一。取一以施「parseInt」。名之曰「甲」。
      夫「數據」之二。取一以施「parseInt」。名之曰「乙」。
      
      加「甲」以「乙」。書之。
      
      • @ 2024-1-25 17:08:05

        我的Python3

        print(int(input()) + int(input())
        

        得了(一行代码)

      • @ 2024-2-3 16:55:12

        只要你想就有

      • @ 2024-7-23 20:03:54

        @ 你这样不行,要加split

      • @ 2024-7-29 15:26:31

        文言……

      • @ 2024-10-28 16:22:19

        python代码是不是得在split的括号里加个空格啊 【感谢点拨】

      • @ 2024-11-27 22:07:19

        @ 这个写法不满足题目输入要求,要求输入一行,两个数之间用空格隔开。

        你程序写法需要在每输入第一个数后,按下回车键。

      • @ 2025-3-15 19:23:14

        文言!hahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahaha

    • 26
      @ 2021-8-24 13:40:55

      这题很简单,输入 aabb,然后输出他们的和即可。

      #include<iostream> //头文件
      using namespace std; //命名空间
      int main(){ //主函数,程序从这里开始
          int a,b; //定义变量
          cin>>a>>b; //输入
          cout<<a+b<<endl; //输出他们的和
          return 0; //主函数需要返回0
      }
      

      管理大大求过

      • @ 2023-12-31 14:00:33

        这道题应该用long long类型的变量进行存储因为数值范围是10610^6,int存不下,建议改一下

      • @ 2024-1-30 13:44:38

        @。 在大多数编程环境中,int 类型的大小通常为 4 字节(32 位),其范围为 -2,147,483,648 到 2,147,483,647(常见的采用补码表示法)。这是根据 C99 标准中的 INT_MIN(最小值)和 INT_MAX(最大值)来定义的。

    • 12
      @ 2021-3-7 18:45:04
      #include<bits/stdc++.h>//万能头文件
      using namespace std;//使用标准命名空间
      int main()//主函数
      {
      	int a,b;
      	cin>>a>>b;
      	cout<<a+b;
      	return 0;//好习惯
      }
      
      • 6
        @ 2021-11-1 16:48:34

        请大家不要发恶搞题解来误导新手,谢谢!

        Python 题解,输入 aabb,输出 a+ba+b
        提醒一句,Python 需要用 split() 切片,而且要转成 int 型。

        a=input().split()
        print(int(a[0])+int(a[1]))
        
        • @ 2024-1-18 21:02:38

          你可以在定义时就转成int

          a=int(input())
          
        • @ 2024-12-13 21:42:21

          @ 错啦,是map(int, input().split())

      • 2
        @ 2023-6-25 17:53:41

        c++:

        # include <bits/stdc++.h>
        using namespace std;
        int main() {
            int a, b;
            scanf("%d%d", &a, &b);
            printf("%d", a + b);
            return 0;
        }
        

        c++极限两行:

        # include <bits/stdc++.h>
        using namespace std;int main() {int a, b;scanf("%d%d", &a, &b);printf("%d", a + b);return 0;}
        

        python:

        # 加;是个人习惯
        a, b = map(int, input().split());
        print(a + b, end='');
        
        • @ 2024-7-23 20:08:20

          C++还可以更短

          #import<iostream>
          main(){int a,b;std::cin>>a>>b;cout<<a+b;}
          
        • @ 2024-7-29 15:32:02

          @ 你试过能编译了么?你cout前面的std::呢?

        • @ 2024-12-6 18:24:23

          C++还可以更短:

          main(){int a,b;__builtin_scanf("%d%d",&a,&b);__builtin_printf("%d",a+b);return 0;}
          
      • 1
        @ 2025-3-10 20:59:21

        这道题非常的简单,但是我们可以使用不同的方法做,在完成题目的同时,也可以发散我们的思维。

        首先第一步:打头文件

        你既可以选择万能头文件#include<bits/stdc++.h>

        也可以选择一般头文件#include<iostream>

        第二步:补充

        using namespace std;

        第三步:写主函数

        int main()
        {
            return 0;
        }
        

        第四步:定义变量

        int a,b;.

        第五步:思考算法

        从这一步开始,你就要开始思考解决这道问题有哪些不同的算法,并开始付诸实践,请看下文。

        法一:直接输入A+BA+B,直接输出A+BA+B

        #include<iostream>
        using namespace std;
        int main()
        {
        int a,s;
        cin>>a>>s;
        cout<<a+s;
        return 0;
        }
        

        法二:利用循环解决

        #include<bits/stdc++.h>
        #define int long long
        using namespace std;
        const int maxn=100010;
        int a,b,n=1,c[maxn];
        signed main(){
        cin>>a>>b;
        for(int i=1;i<=n;i++){
        c[i]+=a+b;
        }
        cout<<c[1];
        }
        

        法三:利用栈解决 思路很明确,将AABB入栈,在计算的时候,弹出栈顶,计算。

        #include<bits/stdc++.h>
        #define int long long
        using namespace std;
        const int maxn=100010;
        stack<int> s;
        int a,b,n;
        signed main(){
        cin>>a>>b;
        s.push(a);
        s.push(b);
        while(!s.empty()){
        n+=s.top();
        s.pop();
        }
        cout<<n;
        }
        

        法四:利用队列解决 思路很简单,利用队列,输入的时候把AA入队BB,在使用的时候,弹出队头再计算。

        #include<bits/stdc++.h>
        #define int long long
        using namespace std;
        const int maxn=100010;
        queue<int> s;
        int a,b,n;
        signed main(){
        cin>>a>>b;
        s.push(a);
        s.push(b);
        while(!s.empty()){
        n+=s.front();
        s.pop();
        }
        cout<<n;
        }
        

        法五:利用双端队列解决 思路很清晰,将AABB一个加入队头,一个加入队尾,使用的时候,将两端分别弹出即可。

        #include<bits/stdc++.h>
        #define int long long
        using namespace std;
        const int maxn=100010;
        deque<int> s;
        int a,b,n;
        signed main(){
        cin>>a>>b;
        s.push_front(a);
        s.push_back(b);
        cout<<s.front()+s.back();
        }
        

        运用不同的方法,解决同一道题目,不仅是收获了快乐,更重要的是发散了思维,熟练了算法。

        • 1
          @ 2024-8-7 19:35:21

          做出这道题,那么恭喜你踏上了万里征程的第一步!

          这是一道适合入门级选手练手的题目,本篇题解为大家介绍 cin 和 cout 。

          cin :标准输入流。

          输入:cin>>变量名;
          多个输入:cin>>变量名1>>变量名2……;

          cout :标准输出流。

          输出变量:cout<<变量名;
          输出单个字符:cout<<'字符';
          输出一串字符:cout<<"一串字符";
          输出换行:cout<<endl;

          本题代码及解析

          #include<iostream>//头文件,可调用cin、cout
          using namespace std;//标准命名空间 
          int main(){//主函数 
          	int a,b;//定义变量 
          	cin>>a>>b;//输入a,b 
          	cout<<a+b;//输出a,b之和 
          	return 0;//返回0 
          }
          
          • 1
            @ 2023-11-3 21:22:55

            LCT解法

            #include <iostream>
            #include <cstring>
            #include <cstdio>
            #include <cstring>
            using namespace std;
            struct node 
            {
                int data,rev,sum;
                node *son[2],*pre;
                bool judge();
                bool isroot();
                void pushdown();
                void update();
                void setson(node *child,int lr);
            }lct[233];
            int top,a,b;
            node *getnew(int x)
            {
                node *now=lct+ ++top;
                now->data=x;
                now->pre=now->son[1]=now->son[0]=lct;
                now->sum=0;
                now->rev=0;
                return now;
            }
            bool node::judge(){return pre->son[1]==this;}
            bool node::isroot()
            {
                if(pre==lct)return true;
                return !(pre->son[1]==this||pre->son[0]==this);
            }
            void node::pushdown()
            {
                if(this==lct||!rev)return;
                swap(son[0],son[1]);
                son[0]->rev^=1;
                son[1]->rev^=1;
                rev=0;
            }
            void node::update(){sum=son[1]->sum+son[0]->sum+data;}
            void node::setson(node *child,int lr)
            {
                this->pushdown();
                child->pre=this;
                son[lr]=child;
                this->update();
            }
            void rotate(node *now)
            {
                node *father=now->pre,*grandfa=father->pre;
                if(!father->isroot()) grandfa->pushdown();
                father->pushdown();now->pushdown();
                int lr=now->judge();
                father->setson(now->son[lr^1],lr);
                if(father->isroot()) now->pre=grandfa;
                else grandfa->setson(now,father->judge());
                now->setson(father,lr^1);
                father->update();now->update();
                if(grandfa!=lct) grandfa->update();
            }
            void splay(node *now)
            {
                if(now->isroot())return;
                for(;!now->isroot();rotate(now))
                if(!now->pre->isroot())
                now->judge()==now->pre->judge()?rotate(now->pre):rotate(now);
            }
            node *access(node *now)
            {
                node *last=lct;
                for(;now!=lct;last=now,now=now->pre)
                {
                    splay(now);
                    now->setson(last,1);
                }
                return last;
            }
            void changeroot(node *now)
            {
                access(now)->rev^=1;
                splay(now);
            }
            void connect(node *x,node *y)
            {
                changeroot(x);
                x->pre=y;
                access(x);
            }
            void cut(node *x,node *y)
            {
                changeroot(x);
                access(y);
                splay(x);
                x->pushdown();
                x->son[1]=y->pre=lct;
                x->update();
            }
            int query(node *x,node *y)
            {
                changeroot(x);
                node *now=access(y);
                return now->sum;
            }
            int main()
            {
                scanf("%d%d",&a,&b);
                node *A=getnew(a);
                node *B=getnew(b);
                    connect(A,B);
                    cut(A,B);
                    connect(A,B);
                printf("%d\n",query(A,B)); 
                return 0;
            }
            
            • 0
              @ 2025-3-27 6:01:40

              此题求两数之和用 + 号,但我们可以用 sum 函数直接求和。 用Python写最简题解如下:

              print(sum(list(map(int,input().split()))))
              
              • 0
                @ 2025-3-12 12:54:38

                一道简单的入门测试题。

                头文件 <iostream> <bits/stdc++.h>均可。

                #include<iostream>
                using namespace std;
                int main()
                {
                	int a,b;
                	cin>>a>>b;
                	cout<<a+b;
                	
                	return 0;
                }
                
                #include<bits/stdc++.h>
                using namespace std;
                int main()
                {
                	int a,b;
                    scanf("%d%d",&a,&b);
                	printf("%d\n",a+b);
                	
                	return 0;
                }
                
                • 0
                  @ 2024-12-13 18:03:57

                  这真的很简单!!!

                  只需要先输入a和b,然后输出a+b的和就行了

                  代码如下 C++

                  #include<bits/stdc++.h>
                  using namespace std;
                  
                  int main(){
                      int a,b;
                      cin >> a >> b;
                      cout << a+b;//输出a+b的和
                      return 0;
                  }
                  
                  • 0
                    @ 2024-12-5 14:58:48

                    这是一个新手题

                    C++

                    #include<iostream> //头文件
                    using namespace std; //存储空间
                    int main()  //主函数
                    {
                        int a,b; //定义
                        cin >> a >> b; //输入
                        cout << a + b; //输出
                        return 0; //结束
                    }
                    

                    这个题很适合新手学习C++

                    • 0
                      @ 2024-11-26 20:59:28

                      空间和时间都省到极致了各位!

                      AC Code:

                      #include<iostream>
                      int main(){
                          int a,b;
                          std::cin>>a>>b;//输入a和b
                          std::cout<<a+b<<std::endl;//输出a+b的结果
                          return 0;
                      }
                      

                      原创不易,切勿抄袭

                      不会这还有人抄吧

                      • 0
                        @ 2024-11-16 0:31:10
                        #include<iostream>
                        #define 声明32位整型 int
                        #define 左圆括号 (
                        #define 右圆括号 )
                        #define 左花括号 {
                        #define 右花括号 }
                        #define 使用 using
                        #define 名字空间 namespace
                        #define 输入 cin>>
                        #define 输出 cout<<
                        #define 和 >>
                        #define 以及 <<
                        #define 声明64位整型 long long
                        #define 返回 return
                        #define 加 +
                        使用 名字空间 std;
                        声明32位整型 main 左圆括号 右圆括号
                        左花括号
                          声明64位整型 a,b;
                          输入 a 和 b;
                          输出 a 加 b;
                          返回 0;
                        右花括号
                        
                        • 0
                          @ 2024-7-28 19:47:33

                          弱爆了 输出cout << a + b;

                          • 0
                            @ 2024-1-19 13:11:50

                            A + B Probelm 氵到要死

                            C++的入门题吧,输入 aabb,输出a+ba+b

                            #include<bits/stdc++.h>
                            using namespace std;
                            int main(){
                                int a, b;
                                cin >> a >> b;
                                cout << a + b;
                                return 0;
                            }
                            
                            • 0
                              @ 2024-1-18 20:58:43
                              #include<bits/stdc++.h>
                              using namespace std;
                              struct Plus{
                              long long a,b;
                              void in(){
                              cin>>a>>b;
                              }
                              void out(){
                              cout<<a+b;
                              }
                              };
                              int main(){
                              Plus a_plus_b;
                              a_plus_b.in();
                              a_plus_b.out();
                              return 0;
                              }
                              
                              
                              • 0
                                @ 2024-1-13 10:27:45

                                #include<bits/stdc++.h> using namespace std; int main(){ int a,b; cin>>a>>b; cout<<a+b;

                                return 0;
                                

                                } 这都不会就过分了啊 👍

                                • 0
                                  @ 2024-1-7 13:23:33

                                  童鞋们你们好!

                                  打开这道题,就相当于你们迈出了万里 OI 路的第一步。让我们重视这一步!

                                  这里提醒同学们:好的代码风格是非常重要的。大家一定要养成良好的代码风格

                                  来看看我打的代码:

                                  #include<bits/stdc++.h> //万能头
                                  using namespace std; //使用std这个命名空间
                                  
                                  int main() {
                                      int a, b; //1e6 int够用
                                      cin >> a >> b; //cin = console+input 标准读入
                                      cout << a + b; //cout = console+output 标准输出
                                      return 0; //不要忘了一个华丽的结尾
                                  }
                                  

                                  最后想请童鞋们注意:强烈建议cin/cout<</>>符号前后打一个空格!这样能让你的代码更加美观!

                                  这就是我们万里编程路的第一步。在以后的刷题中,大家会遇到更多的难题。希望大家能不忘初心,砥砺前行! 说歪了

                                  感谢观看!

                                  信息

                                  ID
                                  56
                                  时间
                                  1000ms
                                  内存
                                  1024MiB
                                  难度
                                  1
                                  标签
                                  递交数
                                  10152
                                  已通过
                                  4586
                                  上传者