AtCoder Beginner Contest 083

A

模拟一下即可。

1
2
3
4
5
6
7
8
9
10
// LUOGU_RID: 174553957
#include <iostream>
using namespace std;
int main()
{
int a, b, c, d;
cin >> a >> b >> c >> d;
(a + b > c + d) ? (cout << "Left\n") : ((a + b == c + d) ? (cout << "Balanced\n") : (cout << "Right\n"));
return 0;
}

B

直接模拟即可。

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
// LUOGU_RID: 174554117
#include<iostream>
using namespace std;
int n,a,b;
int pa(int x)
{
int k = 0;
while(x>0)
{
k+=x%10;
x/=10;
}
if(k>=a&&k<=b)return 1;
else return 0;
}
int main()
{
cin>>n>>a>>b;
int sum = 0;
for(int i=1;i<=n;i++)
{
if(pa(i))sum+=i;
}
cout<<sum<<endl;
return 0;
}

C

直接模拟即可。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
// LUOGU_RID: 174554274
#include<iostream>
using namespace std;
long long a,b;
int main()
{
cin>>a>>b;
long long sum = 0;
while(a<=b)
{
sum++;
a*=2;
}
cout<<sum<<endl;
}

D

由于每次都是修改最长的一段,每次只需要出现不同,就修改两段当中最长的一段,这样去取得最小值即可。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
// LUOGU_RID: 174555753
#include <bits/stdc++.h>
using namespace std;
string s;
int ans = 1 << 30;
int main()
{
cin >> s;
for (int i = 1; i < s.length(); i++)
if (s[i] != s[i - 1])
ans = min(ans, max(i, int(s.length()) - i));
cout << min(ans, int(s.length())) << endl;
return 0;
}