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 }