梦开始的地方“A+B”

  • 题目
    • C语言
    • C++
    • Java
    • Python
    • 暴力枚举
    • DFS
    • 二分
    • 前缀和
    • 位运算

题目

输入两个整数,求这两个整数的和是多少。

输入格式
输入两个整数A,B,用空格隔开

输出格式
输出一个整数,表示这两个数的和

数据范围
0≤A,B≤108
样例输入:
3 4
样例输出:
7

C语言

//C语言
#include

int main(){
    int a , b ;
    scanf("%d%d" , &a , &b);
    printf("%d" , a + b);
}

C++

#include
using namespace std;

int main()
{
    int a , b ; 
    cin >> a >> b;
    cout << a + b;
}

Java

//Java
import java.io.*;
import java.util.*;

public class Main {
    public static void main(String args[]) throws Exception {
        Scanner cin=new Scanner(System.in);
        var a = cin.nextInt();
        var b = cin.nextInt();
        System.out.println(a + b);
    }
}

Python

###python
print(sum(map(int, input().split())))

暴力枚举

#include
using namespace std;

int main()
{
    int a , b ; 
    cin >> a >> b;
    for(int i = 0 ; i <= 200000000 ; i ++){
        if(a + b == i){
            cout << i ;
            break;
        }
    }
}

DFS

#include 
using namespace std;
int a, b;
int dfs(int x) {
    if (x <= 5) return x;
    return dfs(x / 2) + dfs(x - x / 2);
} 
int main() {
    scanf("%d%d", &a, &b);
    printf("%d\n", dfs(a) + dfs(b));
    return 0;
}

二分

#include
using namespace std;

int main()
{
   int a , b;
   cin >> a >> b;
   int l = 0 , r = 200000000;
   while(l < r){
       int mid = (l + r) / 2;
       if(mid == a + b ) {
           cout << mid;
           return 0;
       }
       if(mid < a + b) l = mid + 1;
       if(mid > a + b) r = mid - 1;
   }
   cout << l;
   return 0 ;
}

前缀和

#include
using namespace std;

int main()
{
    int a[2],s[2];
    for(int i = 1 ; i <= 2 ; i++){
        cin >> a[i];
        s[i]=s[i-1]+a[i];
    }
    cout << s[2];
    return 0;
}

位运算

#include 
using namespace std;
int add(int a, int b) {
    if (b == 0) return a;
    return add(a ^ b, (a & b) << 1);
}
int main() {
    int a, b; scanf("%d%d", &a, &b);
    printf("%d\n", add(a, b));
    return 0;
}

你可能感兴趣的:(算法,c++)