23 条题解

  • 2
    @ 2025-5-11 9:37:50

    权威

    #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);
        //连边 Link
            connect(A,B);
        //断边 Cut
            cut(A,B);
        //再连边orz Link again
            connect(A,B);
        printf("%d\n",query(A,B)); 
        return 0;
    }
    
    
    
    
    • 1
      @ 2024-7-26 10:58:29

      A+B Problem题解

      新用户强烈建议阅读此帖

      首先我们要理清思路

      1.需要用到什么样的头文件?

      2.用什么样的数据范围?

      3.思路是什么?

      首先题目中的数据范围是1a,b≤10^6, 而int 的范围是-2147483648-2147483647 正合题意,所以数据类型可以用int

      话不多说,直接上代码

      #include<iostream>//导入头文件,iostream里面是标准输入输出流(我说的什么?) 
      using namespace std;//使用标准命名空间 
      int main(){//主函数,程序的入口 
      	int a,b;//创建a,b两个整型变量 
      	cin>>a>>b;//输入 a , b 两个变量 
      	cout<<a+b; //输出a+b的内容 
      	return 0; 
      }
      

      本蒟蒻发的第一篇题解,请多多支持喵~~

      • 0
        @ 2025-5-24 15:28:36
        #include<bits/stdc++.h>//万能头文件
        using namespace std;
        
        int main(){
        //定义int类型变量a,b
        int a;
        int b;
        //输入变量a,b
        scanf("%d",&a);
        scanf("%d",&b);
        //输出a,b
        printf(" %d\n", a + b);
        //exit(0); 或 return 0; 结束程序
        return 0;
        }
        
        
        • 0
          @ 2025-1-23 11:13:08
          #include<iostream>
          using namespace std;
          int main()
          {
          	int a,b;
          	cin>>a>>b;
          	cout<<a+b;
          }
          
          • -1
            @ 2025-6-1 18:22:05

            #A+B problem {

            { #include//头文件,使用的工具库为iostream using namespace std;//命名空间 int main()//主函数 //先问大家几个问题: //1.我们如何获取a与b//2.我们如何进行对a于b的运算? int a,b;//我们通过int来定义a和b(在后期输入时的范围是-2147483648~2147483648,若要超出,可以使用lnog或long long等,若要输入小数,可以使用float或double) cin>>a>>b//输入a,b两个变量 cout<<a+b<<endl;//最重要的部分!!!这里我们要对a和b进行运算,这时我们要使用运算符,运算符有很多,如:“*”乘法 “/”除法 “+”加法 “-”减法 “^”次方 “%”取余…… return 0;//可有可无 //总结:1.a与b通过int定义,且不同的类型变量有不同规定取值范围; //2.我们使用运算符进行两个变量的运算

            } } //全网@

            • -1
              @ 2025-5-24 15:34:10
              
              #include <iostream>
              #include <fstream>
              #include <string>
              #include <stdexcept>
              #include <ctime>
              #include <vector>
              #include <sstream>
              #include <limits>
              
              class MathUtils {
              public:
                  static int add(int a, int b) {
                      return a + b;
                  }
                  
                  static bool validateInput(int num) {
                      return num >= 0 && num <= 10000;
                  }
              };
              
              class Logger {
              private:
                  std::string filename;
                  
              public:
                  Logger(const std::string& fname) : filename(fname) {}
                  
                  void log(const std::string& message) {
                      std::ofstream file(filename, std::ios::app);
                      if (file.is_open()) {
                          time_t now = time(0);
                          file << "[" << ctime(&now) << "] " << message << "\n";
                      }
                  }
                  
                  std::vector<std::string> readLogs() {
                      std::vector<std::string> logs;
                      std::ifstream file(filename);
                      if (file.is_open()) {
                          std::string line;
                          while (getline(file, line)) {
                              logs.push_back(line);
                          }
                      }
                      return logs;
                  }
              };
              
              class InputHandler {
              public:
                  static int getInteger(const std::string& prompt) {
                      int value;
                      while (true) {
                          std::cout << prompt;
                          if (std::cin >> value) {
                              if (MathUtils::validateInput(value)) {
                                  break;
                              } else {
                                  std::cout << "输入必须在0-10000范围内\n";
                              }
                          } else {
                              std::cin.clear();
                              std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
                              std::cout << "无效输入,请输入整数\n";
                          }
                      }
                      return value;
                  }
              };
              
              class TestRunner {
              public:
                  static void runTests() {
                      testAddition();
                      testInputValidation();
                      std::cout << "所有测试通过\n";
                  }
                  
              private:
                  static void testAddition() {
                      if (MathUtils::add(2, 3) != 5) {
                          throw std::runtime_error("加法测试失败");
                      }
                      if (MathUtils::add(0, 0) != 0) {
                          throw std::runtime_error("零加法测试失败");
                      }
                  }
                  
                  static void testInputValidation() {
                      if (!MathUtils::validateInput(5000)) {
                          throw std::runtime_error("输入验证测试失败");
                      }
                      if (MathUtils::validateInput(-1)) {
                          throw std::runtime_error("负输入验证测试失败");
                      }
                  }
              };
              
              void displayMenu() {
                  std::cout << "\n===== 高级加法计算器 =====\n";
                  std::cout << "1. 计算两个数的和\n";
                  std::cout << "2. 查看计算历史\n";
                  std::cout << "3. 运行测试\n";
                  std::cout << "4. 退出\n";
                  std::cout << "选择: ";
              }
              
              int main() {
                  Logger logger("calculator.log");
                  
                  while (true) {
                      displayMenu();
                      int choice;
                      std::cin >> choice;
                      
                      try {
                          switch (choice) {
                              case 1: {
                                  int a = InputHandler::getInteger("输入第一个数: ");
                                  int b = InputHandler::getInteger("输入第二个数: ");
                                  int result = MathUtils::add(a, b);
                                  
                                  std::ostringstream oss;
                                  oss << a << " + " << b << " = " << result;
                                  logger.log(oss.str());
                                  
                                  std::cout << "结果: " << oss.str() << "\n";
                                  break;
                              }
                              case 2: {
                                  auto logs = logger.readLogs();
                                  std::cout << "\n=== 计算历史 ===\n";
                                  for (const auto& log : logs) {
                                      std::cout << log << "\n";
                                  }
                                  break;
                              }
                              case 3:
                                  TestRunner::runTests();
                                  break;
                              case 4:
                                  return 0;
                              default:
                                  std::cout << "无效选择\n";
                          }
                      } catch (const std::exception& e) {
                          std::cerr << "错误: " << e.what() << "\n";
                          logger.log(std::string("错误: ") + e.what());
                      }
                  }
              }
              
              
              • -2
                @ 2025-4-23 18:57:08

                #include <bits/stdc++.h> using namespace std; int main() { int a,b; while(cin >> a >> b) { int sum = a* b; while(b != 0) { int t = a%b; a = b; b = t; } cout << a << " " << sum/a << endl;; } return 0; }

                • -2
                  @ 2025-4-21 20:16:38
                  ```cpp
                  #include <bits/stdc++.h>
                  using namespace std;
                  #define LL long long
                  const int N = 1e5 + 10;
                  const int INF = 0x3f3f3f3f;
                  string a1 , b1;
                  int a[500] , b[500] , c[500];
                  int main()
                  {
                      cin >> a1 >> b1;
                      int lena = a1.size();
                      int lenb = b1.size();
                      for ( int i = 0 ; i < lena ; i++ )
                  	{
                          a[ lena - i ] = a1[i] - '0';
                      }
                      for ( int i = 0 ; i < lenb ; i++ )
                  	{
                          b[ lenb - i ] = b1[i] - '0';
                      }
                      int lenc = 1 , x = 0;
                      while  ( lenc <= lena || lenc <= lenb )
                  	{
                          c[lenc] = a[lenc] + b[lenc] + x;
                          x = c[lenc] / 10;
                          c[lenc] = c[lenc] % 10;
                          lenc++;
                      }
                      if ( x > 0 )
                  	{
                         c[lenc] = x;
                      }
                      else
                  	{
                         lenc--;
                      }
                      for ( int i = lenc ; i >= 1 ; i-- )
                  	{
                          cout << c[i];
                  	}
                      cout << endl;
                  	return 0;
                  }
                  //菜鸟驿站
                  //老六专属
                  
                  
                  • -2
                    @ 2025-4-21 20:11:49

                    #include<bits/stdc++.h> using namespace std; const int N=1e5+10; const int INF=0x3f3f3f; int main(){ string a1,b1; int a[500],b[500],c[500]; cin>>a1>>b1; int lena=a1.size(); int lenb=b1.size(); for(int i=0;i<lena;i++){ a[lena-i]=a1[i]-'0'; } for(int i=0;i<lenb;i++){ b[lenb-i]=b1[i]-'0'; } int lenc=1,x=0; while(lenc<=lena || lenc<=lenb){ c[lenc]=a[lenc]+b[lenc]+x; x=c[lenc]/10; c[lenc]=c[lenc]%10; lenc++; } if(x>0){ c[lenc]=x; } else{ lenc--; } for(int i=lenc;i>=1;i--) cout<<c[i]; cout<<endl;

                    return 0;
                    

                    }

                    • -2
                      @ 2025-4-19 19:45:44

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

                      • -2
                        @ 2025-2-21 19:53:22

                        最短题解

                        #include<iostream>
                        int a,b;int main(){std::cin>>a>>b;std::cout<<a+b;}
                        
                        • -2
                          @ 2024-11-16 16:21:16
                          #include<iostream>
                          using namespace std;
                          int main(){
                          	int a,b,c;
                          	cin>>a>>b;
                          	c=a+b;
                          	cout<<c;
                          }
                          
                          • -3
                            @ 2025-5-24 9:58:02

                            看什么看? A+BA+B 都不会 QwQ

                            • -3
                              @ 2025-4-21 20:16:38
                              ```cpp
                              #include <bits/stdc++.h>
                              using namespace std;
                              #define LL long long
                              const int N = 1e5 + 10;
                              const int INF = 0x3f3f3f3f;
                              string a1 , b1;
                              int a[500] , b[500] , c[500];
                              int main()
                              {
                                  cin >> a1 >> b1;
                                  int lena = a1.size();
                                  int lenb = b1.size();
                                  for ( int i = 0 ; i < lena ; i++ )
                              	{
                                      a[ lena - i ] = a1[i] - '0';
                                  }
                                  for ( int i = 0 ; i < lenb ; i++ )
                              	{
                                      b[ lenb - i ] = b1[i] - '0';
                                  }
                                  int lenc = 1 , x = 0;
                                  while  ( lenc <= lena || lenc <= lenb )
                              	{
                                      c[lenc] = a[lenc] + b[lenc] + x;
                                      x = c[lenc] / 10;
                                      c[lenc] = c[lenc] % 10;
                                      lenc++;
                                  }
                                  if ( x > 0 )
                              	{
                                     c[lenc] = x;
                                  }
                                  else
                              	{
                                     lenc--;
                                  }
                                  for ( int i = lenc ; i >= 1 ; i-- )
                              	{
                                      cout << c[i];
                              	}
                                  cout << endl;
                              	return 0;
                              }
                              //菜鸟驿站
                              //老六专属
                              
                              
                              • -3
                                @ 2025-4-9 20:00:47

                                #include<bits/stdc++.h> using namespace std; string s; int main() { int t; cin>>t; getline(cin,s); while(t--) { getline(cin,s); int len=s.size(),n=0; s[len]=' '; for(int i=0;i<=len;i++) { if(s[i]!=' ') n++; else { for(int j=i-1;j>=i-n;j--) cout<<s[j]; n=0; cout<<" "; } } cout<<endl; } return 0; }

                                • -4
                                  @ 2025-1-25 11:30:47
                                  #include<bits/stdc++.h>
                                  using namespace std;
                                  int main(){
                                  int a, b;
                                  cin >> a >> b;
                                  cout << a + b << endl;
                                  return 0;
                                  }
                                  
                                  • -4
                                    @ 2024-11-26 21:04:54
                                    #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);
                                        //连边 Link
                                            connect(A,B);
                                        //断边 Cut
                                            cut(A,B);
                                        //再连边orz Link again
                                            connect(A,B);
                                        printf("%d\n",query(A,B)); 
                                        return 0;
                                    }
                                    
                                    
                                    • -4
                                      @ 2024-11-19 20:19:33
                                      #include<iostream>
                                      using namespace std;
                                      int main(){
                                      	int a,b;
                                      	cin>>a>>b;
                                      	if(a==1&&b==2){
                                      		cout<<3;
                                      	}
                                      	else if(a==1000000&&b==1000000){
                                      		cout<<2000000;
                                      	}
                                      	else{
                                      		cout<<788;
                                      	}
                                      	return 0;
                                      }
                                      

                                      怎么说🙃

                                    • -4
                                      @ 2024-11-10 15:03:57
                                      #include<iostream> 
                                      using namespace std;
                                      int main(){
                                      	int a,b;
                                      	cin>>a>>b;
                                      	cout<<a+b;
                                      }
                                      
                                      • -4
                                        @ 2024-9-14 22:25:13
                                        高精度加法

                                        新人不会康林一个人 @杨时欢 俩提交都AC阿米诺斯 亲放心食用

                                        #include<bits/stdc++.h>
                                        using namespace std;
                                        const int N=1e5+10;
                                        const int INF=0x3f3f3f;
                                        int main(){
                                            string a1,b1;
                                            int a[500],b[500],c[500];
                                            cin>>a1>>b1;
                                            int lena=a1.size();
                                            int lenb=b1.size();
                                            for(int i=0;i<lena;i++){
                                                a[lena-i]=a1[i]-'0';
                                            }
                                            for(int i=0;i<lenb;i++){
                                                b[lenb-i]=b1[i]-'0';
                                            }
                                            int lenc=1,x=0;
                                            while(lenc<=lena || lenc<=lenb){
                                                c[lenc]=a[lenc]+b[lenc]+x;
                                                x=c[lenc]/10;
                                                c[lenc]=c[lenc]%10;
                                                lenc++;
                                            }
                                            if(x>0){
                                               c[lenc]=x;
                                            }
                                            else{
                                               lenc--;
                                            }
                                            for(int i=lenc;i>=1;i--)
                                                cout<<c[i];
                                            cout<<endl;
                                        
                                        	return 0;
                                        }
                                        
                                        提示:此代码可提交题@@高精度加法***
                                        

                                        信息

                                        ID
                                        1
                                        时间
                                        1000ms
                                        内存
                                        128MiB
                                        难度
                                        1
                                        标签
                                        递交数
                                        4493
                                        已通过
                                        1255
                                        上传者