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

    比赛链接:https://atcoder.jp/contests/abc161/tasks

    AtCoder Beginner Contest 161

    第一次打AtCoder的比赛,因为是日本的网站终于不用倒时差了233。

    A - ABC Swap

    可以直接按照交换后的顺序输出。

    #include <bits/stdc++.h>
    using namespace std;
    int main()
    {
        int a,b,c;
        cin>>a>>b>>c;
        cout<<c<<' '<<a<<' '<<b;
        return 0;
    }
    View Code

    B - Popular Vote

    最后一个测试点会卡取下整的误差,可以通过变换不等式来避免。

    #include <bits/stdc++.h>
    using namespace std;
    int main()
    {
        int n,m;cin>>n>>m;
        int a[n];for(int &i:a) cin>>i;
        int sum=accumulate(a,a+n,0);
        int cnt=0;
        for(int i:a)
            if(4*m*i>=sum) ++cnt;
        cout<<(cnt>=m?"Yes":"No")<<"
    ";
        return 0;
    }
    View Code

    C - Replacing Integer

    $N$ 通过不断地减 $K$ 最后一定会在 $[0,K)$ 之内,此时输出 $min(N,K-N)$ 即可。

    #include <bits/stdc++.h>
    using namespace std;
    int main()
    {
        long long n,k;cin>>n>>k;
        cout<<min(n%k,k-n%k);
        return 0;
    }
    View Code

    D - Lunlun Number

    对每个数的最后一位从小到大进行扩展,操作 $k$ 次即可。

    #include <bits/stdc++.h>
    using namespace std;
    int main()
    {
        long long k;cin>>k;
    
        queue<long long> q;
        for(long long i=1;i<=9;i++)
            q.push(i);
    
        long long ans;
        while(k--){
            ans=q.front();
            q.pop();
    
            long long m=ans%10;
            
            if(m>0) q.push(ans*10+m-1);
            q.push(ans*10+m);
            if(m<9) q.push(ans*10+m+1);
        }
        cout<<ans;
        
        return 0;
    }
    View Code

    E - Yutori

    思路参考自:Harris-H

    正反向模拟一遍分别存储第 $i$ 次工作的最早和最晚天数,若二者相等说明该天必须工作。

    #include <bits/stdc++.h>
    using namespace std;
    int main()
    {
        int n,k,c;cin>>n>>k>>c;
        string s;cin>>s;
    
        int a[k]={},b[k]={};
    
        for(int i=0,j=0;i<n&&j<k;i++)
            if(s[i]=='o')
                a[j++]=i,i+=c;
            
        for(int i=n-1,j=k-1;i>=0&&j>=0;i--)
            if(s[i]=='o')
                b[j--]=i,i-=c;
    
        for(int i=0;i<k;i++)
            if(a[i]==b[i])
                cout<<a[i]+1<<"
    ";
    
        return 0;
    }
    View Code

    F - Division or Substraction

    若 $N$ 最终可以变为 $1$,$K$  需要满足:$frac{N}{K^n}$${\%K=1}$。

    • 当 $n=0$ 时,$N\%K=1$,此时的 $K$ 为 $N-1$ 的因子。
    • 当 $n>0$ 时,只有枚举不大于 $sqrt{N}$ 的因子K,才有可能得到 $frac{N}{K^n}$${\%K=1}$。

    最后再讨论一下 $K=1$ 和 $K=N$ 的情况即可。 

    #include <bits/stdc++.h>
    using namespace std;
    typedef long long ll;
    int main()
    {
        ll n;cin>>n;
    
        set<ll> st;
        for(ll i=2;i*i<=n;i++){
            if(n%i==0){
                ll t=n;
                while(t%i==0) t/=i;
                if(t%i==1) st.insert(i);
            }
        }
        for(ll i=1;i*i<=n-1;i++){
            if((n-1)%i==0){
                st.insert(i);
                st.insert((n-1)/i);
            } 
        }
        st.erase(1);
        st.insert(n);
    
        cout<<st.size()<<"
    ";
        
        return 0;
    }
    View Code
  • 相关阅读:
    Spring整合JMS(一)——基于ActiveMQ实现 (转)
    spring mvc入门配置
    Java enum的用法详解 (转)
    php学习日记7(关于“ javascript : ; ”的意思)
    php学习日记6(关于php中json_decode和json_encode的区别)
    php学习日记5(关于php中getCacheAll()方法的使用)
    php学习日记4(关于php中的$this->assign(); 与 $this->display();)
    php学习日记3(关于Mysql中limit用法)
    php学习日记2(关于php中的符号->、=>和::的意思)
    php学习日记1(关于Thinkphp框架中D的含义和用法)
  • 原文地址:https://www.cnblogs.com/Kanoon/p/12635169.html
Copyright © 2011-2022 走看看