137 条题解

  • -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;
    }
    
    • -7
      @ 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;
      }
      
      • -8
        @ 2022-8-21 14:37:57

        🚀️

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

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

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

            简单的代码:

            main(){int a,b;scanf("%d%d",&a,&b);printf("%d",a+b);}
            
            • -11
              @ 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

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

            • -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

            • -15
              @ 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了谢谢

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

              a + b problem.

              • -18
                @ 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; }

                • -32
                  @ 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;//高端而潇洒的结尾~
                  }
                  

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

                  • -34
                    @ 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;
                    }
                    
                    • -35
                      @ 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

                        装摸做样的建了棵树……

                    • -38
                      @ 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

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

                    • -45
                      @ 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;//华丽结束

                      • -46
                        @ 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;//输出
                        

                        }

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

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

                        • @ 2022-2-12 12:53:35

                          这位更是重量级。

                        • @ 2022-6-8 9:16:18

                          41 篇题解,41 个踩

                      信息

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