AtCoder Beginner Contest 083

AtCoder Beginner Contest 083

总结:7分钟三题rank12.。一路挂机终榜rank52,+328分,D题确实想不出来怎么写。。

A题题解:判断a+b和c+d的大小关系即可。

AC代码:

 1 #include<iostream>
 2 using namespace std;
 3 int a,b,c,d;
 4 int main()
 5 {
 6     cin>>a>>b>>c>>d;
 7     if(a+b>c+d)cout<<"Left"<<endl;
 8     else if(a+b==c+d)cout<<"Balanced"<<endl;
 9     else cout<<"Right"<<endl;
10 }

B题题解:暴力把每个值的数位和求出来即可。

AC代码:

 1 #include<iostream>
 2 using namespace std;
 3 int n,a,b;
 4 int pa(int x)
 5 {
 6     int k = 0;
 7     while(x>0)
 8     {
 9         k+=x%10;
10         x/=10;
11     }
12     if(k>=a&&k<=b)return 1;
13     else return 0;
14 }
15 int main()
16 {
17     cin>>n>>a>>b;
18     int sum = 0;
19     for(int i=1;i<=n;i++)
20     {
21         if(pa(i))sum+=i;
22     }
23     cout<<sum<<endl;
24     return 0;
25 }

C题题解:一直除2除下去即可,计算除的次数。

AC代码:

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

D题题解:从左到右遍历,出现不一样的数字那么最大的偏转子序列长度就是max(i,n-i),那么最终的答案就是每一次出现不一样数字的子序列长度的最小值。

AC代码:

 1 #include<iostream>
 2 #include<cstring>
 3 #include<cmath>
 4 using namespace std;
 5 const int maxn = 100007;
 6 char a[maxn];
 7 int n;
 8 int main()
 9 {
10     cin>>a;
11     n = strlen(a);
12     int ans = n;
13     for(int i=1;i<n;i++)if(a[i-1]!=a[i])ans=min(ans,max(i,n-i));
14     cout<<ans<<endl;
15 }
原文地址:https://www.cnblogs.com/sortmin/p/8097862.html