Codeforces Round #513 by Barcelona Bootcamp (rated, Div. 1 + Div. 2)

Posted loi-brilliant

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Codeforces Round #513 by Barcelona Bootcamp (rated, Div. 1 + Div. 2)相关的知识,希望对你有一定的参考价值。

Codeforces Round #513 by Barcelona Bootcamp (rated, Div. 1 + Div. 2)

  • Solved : 2 out of 8...
  • Rank : 2730 unrated
  • A. Phone Numbers
  • 难度:普及组。
  • 模拟即可。。
  • Summary : 简单题不要浪费过多时间,要提高做题的精度。
  #include<cstdio>
#include<cstring>
#include<algorithm>
#include<iostream>
using namespace std;
const int N = 100 + 10;
int cnt =0;
int main(){
    int n; scanf("%d", &n);
    for(int i=1;i<=n;i++) {
        char ch;
        cin>>ch;
        if(ch == ‘8‘) cnt++;
    }
    int ans=0;
    while(n){
        if(cnt&&n>=11) cnt--,n-=11,ans++;
        else break;
    }
    printf("%d",ans);
    return 0;
}
  • B. Maximum Sum of Digits
  • 难度: 提高组D1T1?
  • 贪心
    • 对于小于10的数字,a = n, b = 0
    • 对于大于10的数字,我们选择用尽量多的⑨去凑a直到再凑a就会大于n,然后a的最高位就是n的最高位-1,这样就构造出a了。
    • 然后b = n - a。
    • Tips:
      • pow()函数什么的。。。还是自己写个long long的快速幂吧。。。
      • 样例感人。。。还好打了个表找了找规律。。。
    • Summary :
      • 结论题 or 贪心题 一定要打个表写对拍检查一下结论的正确性。
      • 为防止中间量爆long long的情况,在大数据的题目中,能开long long尽量开long long。
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
using namespace std;
long long cal(long long a){
    long long ans=0;
    while(a){
        long long dig=a%10;
        ans+=dig;
        a/=10;
    }
    return ans;
}
long long fpow(long long a,long long b){
    long long ans=1;
    for(;b;b>>=1){
        if(b&1) ans*=a;
        a*=a;
    }
    return ans;
}
int main(){
    long long n; scanf("%I64d", &n);
    long long ans;
    long long a ;
    if(n<10) a= n;
    else {
        a = 0;long long cnt=0;
        while(a<=n) a=a*10+9,cnt++;
        if(a>n) a/=10,cnt--;
        long long top;long long x=n;
        while(x){
            if(x/10>0)top=x/10;
            x/=10;
        }
        top--;
        long long pw=fpow(10,cnt);
        a=(long long)top*pw+a;
    }
    long long b ;
    if(n<10) b=0;
    else {
        b = n-a;
    }
    ans = cal(a) + cal(b);
    printf("%I64d",ans);
    return 0;
}

以上是关于Codeforces Round #513 by Barcelona Bootcamp (rated, Div. 1 + Div. 2)的主要内容,如果未能解决你的问题,请参考以下文章

Codeforces Round #513 by Barcelona Bootcamp (rated, Div. 1 + Div. 2)

Codeforces Round #513 by Barcelona Bootcamp (rated, Div. 1 + Div. 2)C

[Codeforces Round #513 by Barcelona Bootcamp (rated, Div. 1 + Div. 2) ](A~E)

Codeforces Round #513 by Barcelona Bootcamp (rated, Div. 1 + Div. 2) C D

Codeforces Round #513 by Barcelona Bootcamp (rated, Div. 1 + Div. 2) C. Maximum Subrectangle

Codeforces Round #513 游记