171 条题解

  • -1
    @ 2024-3-31 15:19:44
    #include <stdio.h>  #头文件  
    int main(){  #主函数
        int a, b;  #申请int类型变量a,b
        scanf("%d%d", &a, &b);#输入
        printf("%d\n", a+b);#输出
        return 0;#完美结束
    }
    
    • -1
      @ 2024-3-17 11:28:00

      #include<bits/stdc++.h> using namespace std; long long m,n;//一定要用long long 不然会错! int main(){ cin>>n>>m; cout<<n+m<<endl; } 管理大大求过qwq

      • -1
        @ 2024-3-17 11:26:22

        #include<bits/stdc++.h> using namespace std; long long m,n; int main(){ cin>>n>>m; cout<<n+m<<endl; }

        • -1
          @ 2024-2-16 9:02:02

          #include <bits/stdc++.h> using namespace std;
          int main() {
          int a, b;
          cin >> a >> b;
          cout << a + b;
          return 0;
          }
          兄啊,这是给若至做的罢(恼

          • -1
            @ 2024-2-12 16:41:46

            很简单,其实输出 a+b 即可。

            #include<bits/stdc++.h>
            using namespace std;
            int main()
            {
                int a,b;
                cin>>a>>b;
                cout<<a+b;
                return 0;
            }
            
            • @ 2024-2-16 10:55:36

              其实需要高精度

          • -1
            @ 2024-2-5 21:13:26

            这道题想必不用多说了吧,直接附上代码

            
            

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

            
            
            • @ 2024-2-14 19:47:31

              e……你可以复制代码时直接复制,等会如果没有再写仨 `

          • -1
            @ 2024-1-28 14:00:03

            题意

            a+ba+b

            思路

            这题不需要思路

            方法

            也不需要方法

            代码

            #include <iostream> 
            using namespace std; 
            int main() { 
                int a, b; 
                cin >> a >> b; 
                cout << a + b << endl; 
                return 0; 
            }
            
            • -1
              @ 2023-8-27 8:30:20

              这题是入门的基础题,可以用很多方法求解,下面是最简单的几种方法,讲解与代码奉上。

              1.普通解法:运用了普通计算机加法计算方法,C与C++代码如下:

              //c语言解法
              #include<cstdio>
              using namespace std;
              int main(){
                  int a, b;
                  scanf("%d%d", &a, &b);
                  printf("%d%d", a + b);
                  return 0;
              }
              
              //c++语言解法 
              #include<bits/stdc++.h>
               using namespace std; 
              int main(){ 
                  int a, b; 
                  cin >> a >> b; 
                  cout << a + b; 
                  return 0;
              }
              

              2.LCT(Link-Cut Tree)解法:使用动态树来解这题,是较简单难的,不多说,代码奉上::

              #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;
              }
              

              3.树状数组解法:也很“简单”,代码如下:

              #include<iostream>
              #include<cstring>
              using namespace std;
              int lowbit(int a)
              {
                  return a&(-a);
              }
              int main()
              {
                  int n=2,m=1;
                  int ans[m+1];
                  int a[n+1],c[n+1],s[n+1];
                  int o=0;
                  memset(c,0,sizeof(c));
                  s[0]=0;
                  for(int i=1;i<=n;i++)
                  {
                      cin>>a[i];
                      s[i]=s[i-1]+a[i];
                      c[i]=s[i]-s[i-lowbit(i)];
                  }
                  for(int i=1;i<=m;i++)
                  {
                      int q=2;
                      if(q==1)
                      {
                          int x,y;
                          cin>>x>>y;
                          int j=x;
                          while(j<=n)
                          {
                              c[j]+=y;
                              j+=lowbit(j);
                          }
                      }
                      else
                      {
                          int x=1,y=2;//求a[1]+a[2]的和
                          int s1=0,s2=0,p=x-1;
                          while(p>0)
                          {
                              s1+=c[p];
                              p-=lowbit(p);
                          }
                          p=y;
                          while(p>0)
                          {
                              s2+=c[p];
                              p-=lowbit(p);
                          }    
                          o++;
                          ans[o]=s2-s1;
                      }
                  }
                  for(int i=1;i<=o;i++)
                      cout<<ans[i]<<endl;
                  return 0;
              }
              

              4.Splay解法:因为加法满足交换律,所以我们可以把序列翻转一下,所求的总和不变,代码如下:

              #include <bits/stdc++.h>
              #define ll long long
              #define N 100000
              using namespace std;
              int sz[N], rev[N], tag[N], sum[N], ch[N][2], fa[N], val[N];
              int n, m, rt, x;
              void push_up(int x){
                  sz[x] = sz[ch[x][0]] + sz[ch[x][1]] + 1;
                  sum[x] = sum[ch[x][1]] + sum[ch[x][0]] + val[x];
              }
              void push_down(int x){
                  if(rev[x]){
                      swap(ch[x][0], ch[x][1]);
                      if(ch[x][1]) rev[ch[x][1]] ^= 1;
                      if(ch[x][0]) rev[ch[x][0]] ^= 1;
                      rev[x] = 0;
                  }
                  if(tag[x]){
                      if(ch[x][1]) tag[ch[x][1]] += tag[x], sum[ch[x][1]] += tag[x];
                      if(ch[x][0]) tag[ch[x][0]] += tag[x], sum[ch[x][0]] += tag[x];
                      tag[x] = 0;
                  }
              }
              void rotate(int x, int &k){
                  int y = fa[x], z = fa[fa[x]];
                  int kind = ch[y][1] == x;
                  if(y == k) k = x;
                  else ch[z][ch[z][1]==y] = x;
                  fa[x] = z; fa[y] = x; fa[ch[x][!kind]] = y;
                  ch[y][kind] = ch[x][!kind]; ch[x][!kind] = y;
                  push_up(y); push_up(x);
              }
              void splay(int x, int &k){
                  while(x != k){
                      int y = fa[x], z = fa[fa[x]];
                      if(y != k) if(ch[y][1] == x ^ ch[z][1] == y) rotate(x, k);
                      else rotate(y, k);
                      rotate(x, k);
                  }
              }
              int kth(int x, int k){
                  push_down(x);
                  int r = sz[ch[x][0]]+1;
                  if(k == r) return x;
                  if(k < r) return kth(ch[x][0], k);
                  else return kth(ch[x][1], k-r);
              }
              void split(int l, int r){
                  int x = kth(rt, l), y = kth(rt, r+2);
                  splay(x, rt); splay(y, ch[rt][1]);
              }
              void rever(int l, int r){
                  split(l, r);
                  rev[ch[ch[rt][1]][0]] ^= 1;
              }
              void add(int l, int r, int v){
                  split(l, r);
                  tag[ch[ch[rt][1]][0]] += v;
                  val[ch[ch[rt][1]][0]] += v;
                  push_up(ch[ch[rt][1]][0]);
              }
              int build(int l, int r, int f){
                  if(l > r) return 0;
                  if(l == r){
                      fa[l] = f;
                      sz[l] = 1;
                      return l;
                  }
                  int mid = l + r >> 1;
                  ch[mid][0] = build(l, mid-1, mid);
                  ch[mid][1] = build(mid+1, r, mid);
                  fa[mid] = f;
                  push_up(mid);
                  return mid;
              }
              int asksum(int l, int r){
                  split(l, r);
                  return sum[ch[ch[rt][1]][0]];
              }
              int main(){
                  n = 2;
                  rt = build(1, n+2, 0);
                  for(int i = 1; i <= n; i++){
                      scanf("%d", &x);
                      add(i, i, x);
                  }
                  rever(1, n);
                  printf("%d\n", asksum(1, n));
                  return 0;
              }
              

              5.Dijkstra+STL的优先队列优化:代码如下:

              #include <iostream>
              #include <cstdio>
              #include <cstdlib>
              #include <cmath>
              #include <cctype>
              #include <climits>
              #include <algorithm>
              #include <map>
              #include <queue>
              #include <vector>
              #include <ctime>
              #include <string>
              #include <cstring>
              using namespace std;
              const int N=405;
              struct Edge {
                  int v,w;
              };
              vector<Edge> edge[N*N];
              int n;
              int dis[N*N];
              bool vis[N*N];
              struct cmp {
                  bool operator()(int a,int b) {
                      return dis[a]>dis[b];
                  }
              };
              int Dijkstra(int start,int end)
              {
                  priority_queue<int,vector<int>,cmp> dijQue;
                  memset(dis,-1,sizeof(dis));
                  memset(vis,0,sizeof(vis));
                  dijQue.push(start);
                  dis[start]=0;
                  while(!dijQue.empty()) {
                      int u=dijQue.top();
                      dijQue.pop();
                      vis[u]=0;
                      if(u==end)
                          break;
                      for(int i=0; i<edge[u].size(); i++) {
                          int v=edge[u][i].v;
                          if(dis[v]==-1 || dis[v]>dis[u]+edge[u][i].w) {
                              dis[v]=dis[u]+edge[u][i].w;
                              if(!vis[v]) {
                                  vis[v]=true;
                                  dijQue.push(v);
                              }
                          }
                      }
                  }
                  return dis[end];
              }
              int main()
              {
                  int a,b;
                  scanf("%d%d",&a,&b);
                  Edge Qpush;
              
                  Qpush.v=1;
                  Qpush.w=a;
                  edge[0].push_back(Qpush);
              
                  Qpush.v=2;
                  Qpush.w=b;
                  edge[1].push_back(Qpush);
              
                  printf("%d",Dijkstra(0,2));
                  return 0;
              }
              

              6.模拟:模拟人工运算方法,代码如下:

              #include <iostream> 
              #include <cmath>
              using namespace std;
              int fu=1,f=1,a,b,c=0;
              int main()
              {
                  cin>>a>>b;
                  if(a<0&&b>0)fu=2;
                  if(a>0&&b<0)fu=3;
                  if(a<0&&b<0)f=-1;
                  if(a==0){cout<<b;return 0;}
                  if(b==0){cout<<a;return 0;} 
                  a=abs(a);
                  b=abs(b);
                  if(a>b&&fu==3)f=1;
                  if(b>a&&fu==3)f=-1;
                  if(b>a&&fu==2)f=1;
                  if(b<a&&fu==2)f=-1;
                  if(fu==1)c=a+b;
                  if(fu>1)c=max(a,b)-min(a,b);
                  c*=f;
                  cout<<c;
                  return 0;
              }
              

              7.字典树:代码如下:

              #include<cstdio>
              #include<cstring>
              #include<cstdlib>
              #include<algorithm>
              using namespace std;
              struct node{
                  int str[26];
                  int sum;
              }s[1000];
              char str1[100];
              int t=0,tot=0,ss=0;
              bool f1;
              void built()
              {
                  t=0;
                  for(int i=0;i<strlen(str1);i++)
                  {
                       if(str1[i]=='-'){
                           f1=true;continue;
                       }
                       if(!s[t].str[str1[i]-'0'])
                       s[t].str[str1[i]-'0']=++tot;
                       t=s[t].str[str1[i]-'0'];
                       s[t].sum=str1[i]-'0';
                  }
              }
              int query()
              {
                 int t=0;int s1=0;
                 for(int i=0;i<strlen(str1);i++)
                 {
                         if(str1[i]=='-') continue;
                         if(!s[t].str[str1[i]-'0']) return s1;
                         t=s[t].str[str1[i]-'0'];
                         s1=s1*10+s[t].sum;
                 }
                 return s1;
              }
              int main()
              {    
                for(int i=1;i<=2;i++)
                {
                    f1=false;
                    scanf("%s",str1);
                  built();
                  if(f1)
                    ss-=query();
                    else ss+=query();
                }
                printf("%d",ss);
                return 0;    
              }
              

              8.二进制:用二进制的计算方法计算,代码如下:

              #include<iostream>
              #include<cstdio>
              #include<cstdlib>
              #include<cmath>
              #include<algorithm>
              using namespace std;
              int main()
              {
                  int a,b,s=0,s1=0,i=0,na=0,nb=0;
                  cin>>a>>b;
                  if(a<=0) na=1,a*=-1;
                  while(a!=0)
                  {
                      if(a%2!=0)
                      s+=pow(2,a%2*i);
                      a/=2;
                      i++;
                  }
                  i=0;
                  if(na==1) s*=-1;
                  if(b<=0) nb=1,b*=-1;
                  while(b!=0)
                  {
                      if(b%2!=0)
                      s1+=pow(2,b%2*i);
                      b/=2;
                      i++;
                  }
                  if(nb==1) s1*=-1;
                  cout<<s+s1;;
                  return 0;
              }
              

              9.最小生成树:代码如下:

              #include <cstdio>
              #include <algorithm>
              #define INF 2140000000
              using namespace std;
              struct tree{int x,y,t;}a[10];
              bool cmp(const tree&a,const tree&b){return a.t<b.t;}
              int f[11],i,j,k,n,m,x,y,t,ans;
              int root(int x){if (f[x]==x) return x;f[x]=root(f[x]);return f[x];}
              int main(){
                  for (i=1;i<=10;i++) f[i]=i;
                  for (i=1;i<=2;i++){
                      scanf("%d",&a[i].t);
                      a[i].x=i+1;a[i].y=1;k++;
                  }
                  a[++k].x=1;a[k].y=3,a[k].t=INF;
                  sort(a+1,a+1+k,cmp);
                  for (i=1;i<=k;i++){
                      x=root(a[i].x);y=root(a[i].y);
                      if (x!=y) f[x]=y,ans+=a[i].t; 
                  }
                  printf("%d\n",ans);
              }
              

              其他语言解法

              1.Pascal

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

              2.Python2

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

              3.Python3

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

              4.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);
                  }
              }
              

              5.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()
              

              6.php

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

              以上是我想出来的亿种方法,希望大家点个赞支持一下

              • @ 2024-5-6 13:51:40

                请不要抄袭洛谷题解,谢谢

              • @ 2024-7-21 20:51:56

                严重抄袭洛谷题解**严重抄袭洛谷题解**

              • @ 2024-7-21 20:52:34

                @

                举报该用户抄袭洛谷题解

              • @ 2024-7-23 20:05:05

                严重抄袭洛谷题解!!!+1

              • @ 2024-7-29 13:07:06
            • -1
              @ 2023-6-10 19:25:23

              本蒟蒻第一次发题解:

              #include <bits/stdc++.h> //头文件
              using namespace std;//命名空间
              int a,b; //定义变量
              int main() { //主函数,程序从这里开始 
                  cin>>a>>b; //输入
                  cout<<a+b<<endl; //输出他们的和
                  return 0; //主函数需要返回0
              }
              
              • -1
                @ 2022-4-11 7:50:21
                #include<bits/stdc++.h>
                using namespace std;
                int main(){
                  int a,b;
                  cin>>a>>b;
                  cout<<a+b;
                  return 0;
                }
                
                • -1
                  @ 2022-3-26 0:01:54
                  //新手可看此贴
                  #include<bits/stdc++.h>
                  using namespace std;
                  long long a,b;//定义变量a,b
                  int main(){
                      cin>>a>>b;//将a,b输入
                      cout<<a+b;//将a,b的和输出
                      return 0;//主函数返回值为0
                  }
                  
                  • -1
                    @ 2021-10-23 14:47:13
                    #include<iostream> 
                    using namespace std; 
                    int main(){ 
                        int a,b; 
                        cin>>a>>b; 
                        cout<<a+b<<endl;
                        return 0; 
                    }
                    
                    • -1
                      @ 2021-10-5 9:20:35

                      水个 py 的吧。

                      a=input().split()
                      # 用 split() 切片
                      print(int(a[0])+int(a[1]))
                      # 先转 int 型再相加
                      
                      • -2
                        @ 2025-2-21 19:56:37

                        经典题!定义两个变量A和B,输出A+B即可。下面👇上!代!码! C++题解: #include <bits/stdc++.h> using namespace std; int main() { int a, b; cin>>a>>b; cout<<a+b; return 0; } C题解: #include <stdio.h> int main() { int a,b; scanf("%d%d",&a,&b); printf("%d\n", a+b); return 0; } Python3题解: print(int(input()) + int(input())

                        • -2

                          饿的方法方法反反复复方法方法发普通3也非他与i个人原因人与人国语歌坛要通过如果任由规范哥哥发一个

                          • -2
                            @ 2025-1-23 8:39:50

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

                            • -2
                              @ 2025-1-18 17:00:44

                              JAVA

                              import java.util.Scanner;
                              public class Main {
                                  public static void main(String[] args) {
                                      Scanner scanner = new Scanner(System.in);
                                      int a, b;
                                      a = scanner.nextInt();
                                      b = scanner.nextInt();
                                      System.out.println(a + b);
                                  }
                              }****
                              
                              • -2
                                @ 2025-1-17 14:46:41

                                #include using namespace std; int main() { int a, b; cin >> a >> b; // 从标准输入读取 a 和 b 的值 int sum = a + b; // 计算 a 和 b 的和 cout << sum << endl; // 将结果输出到标准输出 return 0; } //c++

                                • -2
                                  @ 2025-1-15 13:11:14
                                  #include<bits/stdc++.h>
                                  using namespace std;
                                  int main() 
                                  {
                                      int a,b;
                                      cin>>a>>b;
                                      cout<<a+b;
                                      return 0;
                                  }
                                  
                                  • -2
                                    @ 2025-1-13 15:26:29
                                    #include <bits/stdc++.h>
                                    using namespace std;
                                    string a,b;
                                    int x[100000],y[100000];
                                    int z[100000];
                                    int main(){
                                    	cin>>a>>b;
                                    	int len=max(a.size(),b.size());
                                    	//逆置转整 
                                    	for(int i=a.size()-1,j=0;i>=0;i--,j++){
                                    		x[j]=a[i]-'0';
                                    	}
                                    	for(int i=b.size()-1,j=0;i>=0;i--,j++){
                                    		y[j]=b[i]-'0';
                                    	}
                                    	//加
                                    	for(int i=0;i<len;i++){
                                    		z[i]+=x[i]+y[i];
                                    		if(z[i]>=10){
                                    			z[i]-=10;
                                    			z[i+1]+=1;
                                    		}
                                    	}
                                    	//输出
                                    	int f=0;//无效输出 
                                    	for(int i=len;i>=0;i--){
                                    		if(z[i]!=0){
                                    			f=1;
                                    		}
                                    		if(f==1){
                                    			cout<<z[i];
                                    		}
                                    	}
                                    	return 0; 
                                    }
                                    

                                    信息

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