2021暑假每日一题 week6 完结

Posted 辉小歌

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2021暑假每日一题 week6 完结相关的知识,希望对你有一定的参考价值。

3798. 幸运年份 【难度: 简单 / 知识点: 思维】

#include<bits/stdc++.h>
using namespace std;
int main(void)
{
    int t; cin>>t;
    while(t--)
    {
        int n; cin>>n;
        if(n<10) cout<<1<<endl;
        else
        {
            string s=to_string(n);
            int b=pow(10,s.size()-1);
            int ans=(n/b+1)*b;
            cout<<ans-n<<endl;
        }
    }
    return 0;
}

3799. 送糖果 【难度: 简单 / 知识点: 模拟】

#include<bits/stdc++.h>
using namespace std;
int main(void)
{
    int t;  cin>>t;
    while(t--)
    {
        int n,m; cin>>n>>m;
        int index;
        for(int i=1;i<1e5;i++) 
        {
            int sum=i+i*(i-1);
            if(sum>n)
            {
                index=i;//保存第几次不够了。
                break;
            }
        }
        if(2*(index-1)+(index-1)*(index-2)>m) puts("Valera ");//如果上一次B不够了
        else puts("Vladik");
    }
    return 0;
}

3800. 奇数还是偶数 【难度: 简单 / 知识点: 数学 同余】

#include<bits/stdc++.h>
using namespace std;
const int N=1e5+10;
typedef long long int LL;
LL a[N];
int main(void)
{
    int t; cin>>t;
    while(t--)
    {
        LL b,k; cin>>b>>k;
        for(int i=0;i<k;i++) cin>>a[i];
        LL sum=0;
        for(int i=0;i<k;i++) sum=(sum*b+a[i])%2;
        if(sum%2) puts("odd");
        else puts("even");
    }
}

3801. 最佳连续子数组 【难度: 一般 / 知识点: 双指针】

#include<bits/stdc++.h>
using namespace std;
const int N=1e5+10;
int a[N];
int main(void)
{
    int t; cin>>t;
    while(t--)
    {
        int n; cin>>n;
        int ans=0;
        int temp=0;
        for(int i=0;i<n;i++) cin>>a[i],temp=max(temp,a[i]);
        for(int i=0,j=0;i<n;i++)
        {
           if(a[i]==temp)
           {
               j=i+1;
               while(j<n&&a[j]==a[i]) j++;
               ans=max(ans,j-i);
               i=j-1;
           }
        }
        cout<<ans<<endl;
    }
    return 0;
}

3802. 消灭数组 【难度: 简单 / 知识点: dfs 分治】

#include<bits/stdc++.h>
using namespace std;
const int N=1e5+10;
int a[N],t,n,ans;
bool check(int l,int r)
{
    for(int i=l+1;i<=r;i++)
        if(a[i]<a[i-1]) return false;
    return true;
}
void dfs(int l,int r,int len)
{
    if(len==1) return ;
    if(check(l,r)) ans=max(ans,len);
    else dfs(l,l+len/2-1,len/2),dfs(l+len/2,r,len/2);
}
int main(void)
{
    cin>>t;
    while(t--)
    {
        cin>>n;
        for(int i=1;i<=n;i++) cin>>a[i];
        ans=1;
        dfs(1,n,n);
        cout<<ans<<endl;
    }
    return 0;
}

以上是关于2021暑假每日一题 week6 完结的主要内容,如果未能解决你的问题,请参考以下文章

2021春季每日一题week6 未完结

寒假每日一题(入门组)week6 完结

2021暑假每日一题 week2 完结

2021暑假每日一题 week5 完结

2021暑假每日一题 week9 完结

2021暑假每日一题 week1 完结