AtCoder Beginner Contest 336

AtCoder Beginner Contest 336

比赛链接

A - Long Loong

思路:

简单的模拟

代码:

#include <bits/stdc++.h>
using namespace std;

#define int long long

void solve() {
    int n;
    // cin>>n;
    cin>>n;
    

    cout<<"L";
    for(int i=1;i<=n;i++){
        cout<<"o";
    }
    cout<<"ng"<<endl;
    
}

signed main() {
    int t=1;
    // cin >> t;
    
    while (t--) {
        solve();
    }
    
    return 0;
}

B - CTZ

思路:

就是将十进制数字转换成二进制数字,最后看看二进制数字最后有多少个零就可了

代码:

#include <bits/stdc++.h>
#include<cstdlib> 
using namespace std;

#define int long long
// int l;
std::vector<int> v;
void func(int x){
    while(x){
        v.push_back(x%2);
        x/=2;
    }
}

void solve() {
    int n;
    cin>>n;
    func(n);
    int ans=0;
    
    for(auto x:v){
        if(x==0){
            ans++;
        }
        else{
            cout<<ans<<endl;
            return ;

        }
        
    }

    
}

signed main() {
    int t=1;
    // cin >> t;
    
    while (t--) {
        solve();
    }
    
    return 0;
}

C - Even Digits

思路:

因为只能是由偶数数字组成的,偶数数字又只有0 2 4 6 8,但是除一位数字以外最高位不能是0
这里就可以把他看成是一个五进制数,因为这里我们只有五个数,然后我们将给定的n转换成五进制数,最后每一位乘2就可以了,但是需要注意一下特殊情况就行

代码:

#include <bits/stdc++.h>
#include<cstdlib> 
using namespace std;

#define int long long


void solve() {
    int n;
    cin>>n;
    std::vector<int > v;
    if(n==1){
        cout<<0<<endl;
        return ;
    }

    n--;
    
    while(n){
        v.emplace_back(n%5);
        n/=5;

    }
    for(int i=v.size()-1;i>=0;i--){
        cout<<v[i]*2;

    }
    
    
}

signed main() {
    int t=1;
    // cin >> t;
    
    while (t--) {
        solve();
    }
    
    return 0;
}

D - Pyramid

思路:

正反各算一下每个位置的前后缀的最大有效长度,然后取最小值的最大值

代码:

#include <bits/stdc++.h>

using namespace std;
#define int long long

void solve() {
    int n;
    cin>>n;

    std::vector<int> a(n+1);
    std::vector<int> l(n+1),r(n+1);
    for(int i=1;i<=n;i++){
        cin>>a[i];
    }
    for(int i=1;i<=n;i++){
        l[i]=r[i]=0;

    }
    for(int i=1;i<=n;i++){
        l[i]=min(a[i],l[i-1]+1);

    }
    for(int i=n;i>=1;i--){
        r[i]=min(a[i],r[i+1]+1);

    }
    int ans=0;
    for(int i=1;i<=n;i++){
        ans=max(ans,min(l[i],r[i]));

    }
    cout<<ans<<endl;
    
}

signed main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    
    int t;
    t = 1;
    // cin>>t;
    
    while(t--) {
        solve();
    }
    
    return 0;
}
posted @ 2024-01-15 11:05  du463  阅读(34)  评论(0编辑  收藏  举报