zoukankan      html  css  js  c++  java
  • AtCoder Beginner Contest 158

    A

    按题意乱搞

    #include <bits/stdc++.h>
    using namespace std;
    #define int long long
    const int N = 1000005;
    
    signed main() {
        string str;
        cin>>str;
        if(str=="AAA" || str=="BBB") puts("No");
        else puts("Yes");
    }
    

    B

    老套的题目,按余数讨论即可

    #include <bits/stdc++.h>
    using namespace std;
    #define int long long
    const int N = 1000005;
    
    signed main() {
        int n,a,b;
        cin>>n>>a>>b;
        int ans=n/(a+b)*a;
        int r=n%(a+b);
        if(r>a) ans+=a;
        else ans+=r;
        cout<<ans;
    }
    

    C

    找到答案的可能区间然后找最小数即可,注意不要使用浮点

    #include <bits/stdc++.h>
    using namespace std;
    #define int long long
    const int N = 1000005;
    
    signed main() {
        int a,b;
        cin>>a>>b;
        int l=max(10*b,(25*a+1)/2);
        int r=min(10*b+10,(25*a+25+1)/2);
        int L=l+0.1,R=r+0.1;
        if(L<R) cout<<L;
        else cout<<-1;
    }
    

    D

    维护头尾两个栈和一个翻转标记

    #include <bits/stdc++.h>
    using namespace std;
    #define int long long
    const int N = 1000005;
    
    string str;
    vector <char> v[2];
    int fg=0;
    int q;
    int t1,t2;
    
    signed main() {
        ios::sync_with_stdio(false);
        cin>>str;
        cin>>q;
        for(int i=1;i<=q;i++) {
            cin>>t1;
            if(t1==1) {
                fg^=1;
            }
            else {
                cin>>t2;
                char ch;
                cin>>ch;
                if(t2==1) {
                    v[fg].push_back(ch);
                }
                else {
                    v[fg^1].push_back(ch);
                }
            }
        }
        if(fg==0) {
            while(v[0].size()) cout<<v[0].back(), v[0].pop_back();
            cout<<str;
            for(char c:v[1]) cout<<c;
        }
        else {
            while(v[1].size()) cout<<v[1].back(), v[1].pop_back();
            reverse(str.begin(),str.end());
            cout<<str;
            for(char c:v[0]) cout<<c;
        }
    }
    
    

    E

    如果 ((p,10)=1),那么如果一个答案 (k) 不是 (p) 的倍数, (10^rk) 也不是,因此直接处理出大数的带位权前缀和,然后暴力数出 (mod p) 后各余数对应的端点有多少个来计算区间数即可

    否则,(p=2)(p=5),根据初等数论的结论,这两个数字的整除性可以根据尾数判断

    #include <bits/stdc++.h>
    using namespace std;
    #define int long long
    const int N = 1000005;
    
    int n,c[10005],p,a[N],s[N],pw[N],ans;
    char str[N];
    
    signed main() {
        cin>>n>>p>>str+1;
        for(int i=1;i<=n;i++) a[i]=str[i]-'0';
        if(__gcd(p,10ll)==1) {
            pw[0]=1;
            for(int i=1;i<=n;i++) pw[i]=pw[i-1]*10%p;
            for(int i=1;i<=n;i++) s[i]=(s[i-1]+pw[n-i]*a[i])%p;
            for(int i=0;i<=n;i++) c[s[i]]++;
            for(int i=0;i<p;i++) ans+=c[i]*(c[i]-1)/2;
            cout<<ans;
        }
        else if(p==2) {
            for(int i=1;i<=n;i++) if(a[i]%2==0) ans+=i;
            cout<<ans;
        }
        else if(p==5) {
            for(int i=1;i<=n;i++) if(a[i]%5==0) ans+=i;
            cout<<ans;
        }
    }
    
    
    

    F

    待填坑

  • 相关阅读:
    Matplotlib
    【源码解读】EOS测试插件:txn_test_gen_plugin.cpp
    EOS多节点组网:商业场景分析以及节点启动时序
    EOS商业落地利器:多签名操作与应用
    EOS技术研究:合约与数据库交互
    【精解】EOS标准货币体系与源码实现分析
    【精解】EOS智能合约演练
    Efficient&Elegant:Java程序员入门Cpp
    区块链3.0:拥抱EOS
    以太坊挖矿源码:clique算法
  • 原文地址:https://www.cnblogs.com/mollnn/p/12440960.html
Copyright © 2011-2022 走看看