177 条题解

  • -6
    @ 2021-11-9 16:40:50

    虽然这种简单题写个快读确实是大材小用, 但是有了快读,这个程序的主程序就可如python一般简洁

    因此就有了这篇题解,大家就当学快读的写法吧qwq

    #include <bits/stdc++.h>
    using namespace std;
    inline int read()
    {
        int X = 0; bool f = false; char ch = getchar();
        while (ch > '9' || ch < '0') {f |= ch == '-'; ch = getchar();}
        while (ch <= '9' && ch >= '0') {X = (X << 3) + (X << 1) + (ch ^ 48); ch = getchar();}
        return f ? -X : X;
    }
    inline void write(int X)
    {
        if (X == 0) {putchar('0'); return;}
        if (X < 0) {putchar('-'); X = -X;}
        short num[21], cnt = 0;
        while (X) {num[++cnt] = X % 10; X /= 10;}
        while (cnt) putchar(num[cnt--] ^ 48);
        return;
    }
    int main()
    {
        write(read() + read());
        return 0;
    }
    
    • -8
      @ 2022-1-8 13:34:43

      水一篇题解哈哈哈哈哈

      声明:为了不错误引导新手上路,我会区分新手和神犇的解题方法(当然神犇不是我)

      新手请看这里:

      #include<iostream>
      using namespace std;
      int main()
      {
          int a,b;   //定义a,b两数,数据规模巨大的话用long long int也不是不可~
          cin>>a>>b;  //输入a,b
          cout<<a+b;  //输出a+b的结果,等同于int c=a+b; cout<<c;
          return 0;  //return 0好习惯
      }
      

      神犇请看这里:(高精度加法)

      先用字符串数组,以字符形式储存两个大数。再依次储存被加数,加数,和。之后再将字符数字转为四位一块的整数数字,逐块相加,并进位,最后计算和的块的总数即可。

      #include <bits/stdc++.h>
      #define N 200
      int Pow(int a, int b)
      {
          int i = 0, result = 1;
          for(i = 0; i < b; ++i)
          {
              result *= a;
          }
          return result;
      }
      int main()
      {
          char stra[N], strb[N];
          int i = 0, step = 4, carry = 0;
          int lengtha, lengthb, maxlength, resultsize;
          int numa[N], numb[N],numc[N];
          memset(numa, 0, sizeof(numa));
          memset(numb, 0, sizeof(numb));
          memset(numc, 0, sizeof(numc));
          scanf("%s%s", stra, strb);
          lengtha = strlen(stra);
          lengthb = strlen(strb);
          for(i = lengtha-1; i >= 0; --i)
          {
              numa[(lengtha-1-i)/step] += (stra[i]-'0')*Pow(10,(lengtha-1-i)%step);
          }
          for(i = lengthb-1; i >= 0; --i)
          {
              numb[(lengthb-1-i)/step] += (strb[i]-'0')*Pow(10,(lengthb-1-i)%step);
          }
          maxlength = lengtha > lengthb ? lengtha : lengthb;
          for(i = 0; i <= maxlength/step; ++i)
          {
              numc[i] = (numa[i] + numb[i])%Pow(10, step) + carry; 
              carry = (numa[i] + numb[i])/Pow(10, step); 
          }
          resultsize = numc[maxlength/step] > 0 ? maxlength/step : maxlength/step - 1;
          printf("%d", numc[resultsize]);
          for(i = resultsize-1; i >= 0; --i)
          {
              printf("%04d", numc[i]); 
          }
          printf("\n");
          return 0;
      }
      
      • -10
        @ 2022-8-21 14:37:57

        🚀️

        • -11
          @ 2022-2-10 21:32:48

          简单的代码:

          main(){int a,b;scanf("%d%d",&a,&b);printf("%d",a+b);}
          
          • -11
            @ 2022-1-20 11:35:02

            本人太弱不会a+b,只能冲一发退火来碰碰运气

            #include<bits/stdc++.h> 
            #define ll long long
            using namespace std;
            const double d=0.999;
            const double lim=1e-10;
            ll a,b;
            ll ans;
            ll num;
            int read()
            {
            	int x=0,f=1;
            	char ch=getchar();
            	while(ch<'0'||ch>'9')
            	{
            		if(ch=='-') f=-1;
            		ch=getchar();
            	}
            	while(ch>='0'&&ch<='9')
            	{
            		x=x*10+(ch^48);
            		ch=getchar();
            	}
            	return x*f;
            }
            int calc(int x)
            {
                return abs(a+b-x)-abs(a+b-ans);
            }
            void ghost_fire()
            {
                double T=1000000;
                while(T>lim)
                {
                    int x=num+((rand()<<1)-RAND_MAX)*T;
                    int del=calc(x);
                    if(del<0)
                    {
                        ans=x;
                        num=x;
                    }
                    else if(exp(-del/T)>(double)rand()/RAND_MAX) num=x;
                    T*=d;
                }
            }
            void work()
            {
            	for(int i=1;i<=100;i++) ghost_fire();
            }
            int main()
            {
                a=read();
                b=read();
                work();
                cout<<ans<<endl;
                return 0;
            }
            
            • @ 2022-1-28 15:21:56

              emm……

            • @ 2022-7-25 16:32:12

              emmm……您会模拟退火?膜拜

            • @ 2024-8-27 13:14:06

              orz

          • -11
            @ 2022-1-1 7:58:03

            输入 aa , bb,输出 a+ba+b,然后我们可以定义 int 整型量来存 a,ba,b ,最后用 + 号链接,输出即可

            • -13
              @ 2022-3-28 19:23:04

              上代码:

              #include<bits/stdc++.h>
              using namespace std;
              void dfs(int a,int b,int ans,int flag)
              {
                  if(flag){printf("%d",ans);exit(0);}
                  dfs(a,b,a+b,flag+1);
                  // 加法
              }
              int main()
              {
                  string s="";
                  getline(cin,s);
                  // 输入
                  int a=0,b=0,flag=0,fa=1,fb=1;
                  // fa:a符号,fb:b符号
                  for(int i=0;i<s.size();i++)
                  {
                      if(s[i]==' ') flag=1;// 遇到空格读下一个数
                      if(s[i]=='-') 
                      {
                          if(flag) fb=-1;
                          else fa=-1;
                      }
                      if(s[i]>='0'&&s[i]<='9')
                      {
                          if(flag) b=(b<<1)+(b<<3)+(s[i]^48);// b*10+s[i]-'0'
                          else a=(a<<1)+(a<<3)+(s[i]^48);// a*10+s[i]-'0'
                      }
                  }
                  dfs(a*fa,b*fb,0,0);
                  return 0;
              }
              

              这题还是挺简单的

              • @ 2022-7-25 16:28:42

                不要搞这些花里胡哨的了(你是洛谷的吧)

            • -17
              @ 2022-1-28 11:03:13

              这题是个练for循环的好题。

              #include<bits/stdc++.h> 
               using namespace std; 
                int a,b; 
                int main(){ 
                for(int i=1;i<=2;i++) {
                   cin>>a;
                 b+=a;
                } 
                cout<<b; 
                }
              
              • @ 2022-3-5 16:51:48

                您完全不初始化的是吗

              • @ 2022-11-9 21:07:00

                您完全不初始化变量 b 是吗

              • @ 2024-8-28 8:52:13

                @ 在main()外面的都自动初始化为0了谢谢

              • @ 2024-8-28 8:52:36

                @ 在main()外面的都自动初始化为0了谢谢

            • -20
              @ 2022-2-12 12:52:51

              a + b problem.

              • -21
                @ 2021-11-30 9:33:53

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

                • -36
                  @ 2021-8-8 16:35:12

                  用线段树+标记永久化即可

                  #include <cstdio>
                  #define mid L + (R-L >> 1)
                  const int maxn = 1e5+5;
                  
                  int n, a[maxn], m;
                  int sl, sr, add;
                  
                  struct segtree{
                  	int sum[maxn<<2], tag[maxn<<2];
                  	inline int lc(int o){return o<<1;}
                  	inline int rc(int o){return o<<1|1;}
                  	void build(int o, int L, int R){
                  		if(L == R){sum[o] = a[L];return;}
                  		int M = mid;
                  		build(lc(o), L, M);
                  		build(rc(o), M+1, R);
                  		sum[o] = sum[lc(o)] + sum[rc(o)];
                  	}
                  	void maintain(int o, int L, int R){
                  		if(R>L){
                  			sum[o] = sum[lc(o)] + sum[rc(o)];
                  			sum[o] += tag[o] * (R-L+1);
                  		} else {
                  			sum[o] += tag[o];
                  			tag[o] = 0;
                  		}
                  	}
                  	void updata(int o, int L, int R){
                  		if(sl <= L && R <= sr)tag[o] += add;
                  		else{
                  			int M = mid;
                  			if(sl <= M)updata(lc(o), L, M);
                  			if(sr > M)updata(rc(o), M+1, R);
                  		}
                  		maintain(o, L, R);
                  	}
                  	int query(int o, int L, int R, int tags){
                  		if(sl <= L && R <= sr)return sum[o] + tags * (R-L+1);
                  		else {
                  			int M = mid, res = 0;
                  			if(sl <= M)res += query(lc(o), L, M, tags+tag[o]);
                  			if(sr > M)res += query(rc(o), M+1, R, tags+tag[o]);
                  			return res;
                  		}
                  	}
                  } sol;
                  
                  signed main(){
                  	n = 1; 
                  	int a, b; 
                  	scanf("%d%d", &a, &b);
                  	sol.build(1, 1, n);
                  	add=a; sl=1; sr=1;
                  	sol.updata(1, 1, 1);
                  	add=b;
                  	sol.updata(1, 1, 1);
                  	printf("%d\n", sol.query(1, 1, n, 0));
                  	return 0;
                  }
                  

                  当然,树状数组也可以,并且更快

                  #include <iostream>
                  using namespace std;
                  const int n = 1;
                  int a, b;
                  int c[500005];
                  inline int lowbit(int x){
                  	return x & (-x);
                  }
                  inline int sum(int x){
                  	int ans=0;
                  	for(int i=x;i>0;i-=lowbit(i))
                  	ans+=c[i];
                  	return ans;
                  }
                  void add(int x,int y){
                  	for(int i=x;i<=n;i+=lowbit(i))
                  	c[i]+=y;
                  }
                  int main(){
                  	cin>>a>>b;
                  	add(1, a); add(1, b);
                  	printf("%d\n", sum(1));
                  	return 0;
                  }
                  
                  • @ 2022-7-25 16:33:55

                    咕咕咕

                  • @ 2022-7-25 16:34:54

                    装摸做样的建了棵树……

                  • @ 2025-2-21 19:59:13

                    菜菜菜

                • -36
                  @ 2021-5-24 13:48:12

                  二分求解即可

                  #include<bits/stdc++.h>
                  #define N 100010
                  using namespace std;
                  int a,b;
                  int s(int a,int b) {
                  	int l=-1e9,r=1e9,mid;
                  	while(l<r) {
                      	mid=(l+r)/2;
                      	if(mid==a+b)
                      	    return mid;
                      	else if(mid>a+b)
                      	    r=mid;
                      	else
                      	    l=mid;
                      }
                  }
                  int main() {
                  	cin>>a>>b;
                  	cout<<s(a,b);
                  	return 0;
                  }
                  
                  • @ 2025-2-21 19:58:24

                    需要这么麻烦吗????????

                • -37
                  @ 2021-5-19 22:01:00

                  C++11の高端的题解!

                  #include<iostream>
                  #include<cstdio>
                  #include<algorithm>
                  #include<cstring>
                  #include<cmath>
                  #include<string>
                  #include<cstdlib>
                  using namespace std;//超长无关紧要的高端的头文件
                  int a,b;//定义高端的变量
                  int main(){
                  	scanf("%d%d",&a,&b);//快速读入高端的变量
                  	printf("%d",a+b);//经过简简单单的高端的计算后,快速输出高端的结果!
                  	return 0;//高端而潇洒的结尾~
                  }
                  

                  看这高端的注释,不点个赞吗?

                  • -41
                    @ 2021-9-20 21:43:22

                    高精度水一发......

                    #include <iostream>
                    #include <string>
                    #include <algorithm>
                    using namespace std;
                    string a,b;
                    int x[1005],y[1005],ans[1005];
                    int main()
                    {
                    	cin>>a>>b;
                    	int la=a.size(),lb=b.size();
                    	reverse(a.begin(),a.end());
                    	reverse(b.begin(),b.end());
                    	int n,i,j;
                    	for(i=0;i<la;i++)    x[i]=a[i]-'0';
                    	for(i=0;i<lb;i++)    y[i]=b[i]-'0';
                    	int temp,jin=0;
                    	for(i=0;i<1000;i++)
                    	{
                    		temp=x[i]+y[i]+jin;
                    		if(temp>=10)
                    		{
                    			jin=1;
                    			ans[i]=temp-10;
                    		}
                    		if(temp<10)
                    		{
                    			jin=0;
                    			ans[i]=temp;
                    		}
                    	}
                    	for(i=1000;i>=0;i--)
                    		if(ans[i]!=0)
                    			break;		
                    	for(;i>=0;i--)
                    	{
                    		cout<<ans[i];
                    	}
                        return 0;
                    }
                    
                    • @ 2022-7-25 16:33:37

                      我也写了一份高精度,大佬帮忙看看除法哪儿错了呗

                  • -49
                    @ 2021-9-25 11:11:53

                    输出A+B非常简单
                    #include <bits/stdc++.h> using namespace std; int a,b; cin>>a>>b; cout<<a+b<<endl;//输出; return 0;//华丽结束

                    • -50
                      @ 2021-8-27 15:15:12

                      这题挺简单的,是个入门题

                      不说了,直接上code:

                      #include<bits/stdc++.h>

                      using namespace std;

                      int a,b;//定义

                      int main() {

                      cin>>a>>b;//输入
                      cout<<a+b;//输出
                      

                      }

                    • -86
                      @ 2021-10-4 23:13:10

                      #include #define mid L + (R-L >> 1) const int maxn = 1e5+5;

                    信息

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