题目描述

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

输入格式

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

输出格式

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

数据范围

0A,B1080≤A,B≤10^8

样例输入:

33 44

样例输出:

77

AC代码

1
2
3
4
5
6
7
8
#include<bits/stdc++.h>
using namespace std;
int main(){
int a,b;
cin>>a>>b;
cout<<a+b<<endl;
return 0;
}

线段树版本 😅😅😅

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
#include<iostream>
#include<cstdio>
#include<algorithm>
#define ll long long
#define INF 0x3f3f3f3f

using namespace std;
struct node
{
ll l;
ll r;
ll sum;
}st[20];
void build(ll,ll,ll);
ll find1(ll,ll,ll);
ll a[3];
int main()
{
ios::sync_with_stdio(false);
for(int i = 1;i <= 2;++i)
{
cin >> a[i];
}
build(1,1,2);
cout << find1(1,1,2) << endl;
return 0;
}

void build(ll p,ll l,ll r)
{
st[p].l = l,st[p].r = r;
if(l == r)
{
st[p].sum = a[l];
return ;
}
ll mid = (l + r) >> 1;
build(p << 1,l,mid);
build((p << 1) + 1,mid + 1,r);
st[p].sum = st[p << 1].sum + st[(p << 1) + 1].sum;
}

ll find1(ll p,ll l,ll r)
{
if(l <= st[p].l&&r >= st[p].r)
{
return st[p].sum;
}
ll mid = (st[p].l + st[p].r) >> 1;
ll ans = 0;
if(l <= mid) ans += find1(p << 1,l,r);
if(r > mid) ans += find1((p << 1) + 1,l,r);
return ans;
}