题目描述
输入两个整数,求这两个整数的和是多少。
输入格式
输入两个整数A,B,用空格隔开
输出格式
输出一个整数,表示这两个数的和
数据范围
0≤A,B≤108
样例输入:
3 4
样例输出:
7
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; }
|