第六十二天 牛客62场小白月赛

编程入门 行业动态 更新时间:2024-10-24 11:13:34

第六十<a href=https://www.elefans.com/category/jswz/34/1749878.html style=二天 牛客62场小白月赛"/>

第六十二天 牛客62场小白月赛

A题

大水题

#include<iostream>using namespace std;int h[10010];
int t,n,m,a,k,b;void zhang(int h[])
{while(--m){for(int i=1;i<=n;i++){h[i]+=a;if(h[i]>k) h[i]=b;}}for(int i=1;i<=n;i++){cout<<h[i]<<' ';}
}int main()
{cin>>t;while(t--){cin>>n;for(int i=1;i<=n;i++){cin>>h[i];}cin>>a>>k>>b;cin>>m;zhang(h);cout<<endl;}return 0;
}

 B题

这题核心是弄懂为什么只有0.1输出

因为询问的数小于等于数字个数,分为两种情况

1.所有数的和加起来等于询问的数的倍数,余零。

2.因为个数大于要询问的数n,所以和的余数种类要小于个数。所以去掉一个数可以满足所有的余数情况。

#include<iostream>
using namespace std;int t,l,r,m,n;
long long int sum;int main()
{cin>>t;while(t--){cin>>l>>r;sum=1ll*(l+r)*(r-l+1)/2;cin>>m;while(m--){cin>>n;if(sum%n==0) cout<<0;else cout<<1;cout<<endl;}}return 0;
}

 

 C题

 先放一段别人代码,这题思路是只要质因子不同两个数组就不同。故分解质因子再比较就可以了。

#include<bits/stdc++.h>
using namespace std;
int n;
int a[100005];
int b[100005];
int mp[1000005];
int main()
{cin>>n;for(int i = 1;i<=n;++i){cin>>a[i];int x = a[i];for(int j = 2;j<=sqrt(x);++j)while(x%j==0){mp[j]++;x/=j;}if(x>1)mp[x]++;}for(int i = 1;i<=n;++i){cin>>b[i];int x = b[i];for(int j = 2;j<=sqrt(x);++j)while(x%j==0){if(mp[j]){cout<<"No\n";return 0;}x/=j;}if(x>1){if(mp[x]){cout<<"No\n";return 0;}    }}cout<<"Yes\n";return 0;
}

 可恶啊,为什么我写的不行啊,甚至用了线性筛法,双指针结果还是不行。明天继续,把剩下题肝完。

#include<iostream>
using namespace std;

const int N=1010;

int n,cnt=0,cnt1=0,cnt2=0,prime[10000],a[N],b[N],c[N];
bool flag=true,st[10000],st1[N];

void primes()
{
    for(int i=2;i<=100000;i++)
    {
        if(!st[i]) prime[cnt++]=i;
        for(int j=0;j<=100000/i;j++)
        {
            st[i*prime[j]]=true;
            if(i%prime[j]==0) break;
        }
    }
}

void judge(int x)
{
    if(x==1) flag=false;
    for(int i=0;i<cnt;i++)
    {
        
        if(x%prime[i]==0)
        {
            if(!st1[prime[i]])
            {
                c[cnt1++]=prime[i];
                st1[i]=true;
            }
        }
        
    }
    
}

int main()
{
    cin>>n;
    primes();
    for(int i=1;i<=n;i++)
    {
        cin>>a[i];
        judge(a[i]);
    }
    cnt2=cnt1;
    for(int i=1;i<=n;i++)
    {
        cin>>b[i];
        judge(b[i]);
    }
    for(int i=0,j=0;i<cnt2;i++)
    {
        while(a[cnt1-cnt2+j]>=a[i])
        {
            if(a[cnt1-cnt2+j]==a[i])
                flag=false;
            j++;
        }
    }
   
    if(flag) cout<<"Yes";
    else cout<<"No";
    return 0;    
}

深夜加代码真的有种意境的(笑)

更多推荐

第六十二天 牛客62场小白月赛

本文发布于:2024-03-23 14:37:50,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1739344.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:二天   牛客   白月

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!