首页 > 其他分享 >牛客周赛 Round 6

牛客周赛 Round 6

时间:2023-08-07 20:24:09浏览次数:32  
标签:周赛 int cin long 牛客 ans Round

牛客周赛 Round 6

A-游游的数字圈_牛客周赛 Round 6 (nowcoder.com)

枚举即可

#include <bits/stdc++.h>
#define int long long

using namespace std;

signed main(){
    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    string s;
    cin >> s;

    int ans = 0;
    for(int i = 0;i < s.size();i ++){
        ans += (s[i] == '0' || s[i] == '6' || s[i] == '9');
        ans += (s[i] == '8') * 2;
    }
    
    cout << ans << '\n';
    return 0;
}

B-竖式乘法_牛客周赛 Round 6 (nowcoder.com)

\(a\)每次去乘\(b\)的每一位数累加即可

#include <bits/stdc++.h>
#define int long long

using namespace std;

signed main(){
    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    int T;
    cin >> T;
    while(T--){
        int ans = 0;
        int a,b;
        cin >> a >> b;

        while(b){
            ans += b % 10 * a;
            b /= 10;
        }

        cout << ans << '\n';
    }
    return 0;
}

C-游游的数值距离_牛客周赛 Round 6 (nowcoder.com)

若令\(|x! \times y - y - n|=0\),我们可以得到\(y = \frac{n}{x! - 1}\),因此我们可以去枚举\(x\),从而得到\(y\),且这里是向下取整的,所以正确答案要么是 \(y\) 要么是 \(y+1\) ,又因为\(x!\)是一个很大的数,所以我这里枚举到\(10\)就行了

#include <bits/stdc++.h>
#define int long long

using namespace std;

signed main(){
    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    int n;
    cin >> n;

    int ansx = 1,ansy = 1,fac = 2,ans = n;
    for(int i = 3;i <= 10;i ++){
        fac *= i;

        int y = n / (fac - 1);
        int val = abs(y * (fac - 1) - n);
        if(y > 0 && y != 2 && val <= ans){
            ans = val, ansx = i, ansy = y;
        }

        y++;
        val = abs(y * (fac - 1) - n);
        if(y > 0 && y != 2 && val <= ans){
            ans = val, ansx = i, ansy = y;
        }
    }

    cout << ansx << ' ' << ansy << '\n';

    return 0;
}

D-游游的k-好数组_牛客周赛 Round 6 (nowcoder.com)

要使得所有长度区间为\(k\)的区间和相等,最简单的方法就是让每隔\(k\)个数字相等,这样每长度为\(k\)的第\(i\)个数字都相同,那自然区间和也相等,所以我们先算出每隔\(k\)个数字的最大值,然后计算每\(k\)个数字到其最大值差多少,我们最多补\(x\),如果说差的比我们能补得还多,那我们不能把它变为一个\(k-\)好数组,否则我们尽量的把多出来的数分到所有的长度为\(k\)的区间内的第\(i\)个数字上,最后就是看分配到哪个位置上能得到最大值

#include <bits/stdc++.h>
#define int long long

using namespace std;

signed main(){
    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    int T;
    cin >> T;
    while(T--){
        int n,k,x;
        cin >> n >> k >> x;
        vector<int> a(n),mx(k);
        for(int i = 0;i < n;i ++){
            cin >> a[i];
            mx[i % k] = max(mx[i % k], a[i]);
        }

        int sum = 0;
        for(int i = 0;i < n;i ++)
            sum += mx[i % k] - a[i];

        if(sum > x){
            cout << -1 << '\n';
            continue;
        }

        x -= sum;
        int ans = 0;
        for(int i = 0;i < k;i ++){
            int now = n / k + (n % k > i);
            ans = max(ans, mx[i] + x / now);
        }

        cout << ans << '\n';

    }

    return 0;
}

E-小红的循环节长度_牛客周赛 Round 6 (nowcoder.com)

后面补题了再写题解qwq

标签:周赛,int,cin,long,牛客,ans,Round
From: https://www.cnblogs.com/Kescholar/p/17612626.html

相关文章

  • 记一场很厉害的牛客多校
    破防场。全是诈骗提。但是很有可以学的东西!\(I.\)给定\(n\)个01?串,?可以替换为0或1。称替换完的串集合为该串的生成串。问所有\(n\)个串的生成串集合的并的大小。长度不同的串分开处理。对于长度\(\le20\)的串,暴力枚举生成串,map去重。对于长度\(>20\)的......
  • Codeforces Round 890 (Div. 2) supported by Constructor Institute A-E1
    An=50非常小所以直接暴力枚举枚举每次把某个数以下的全部减完然后看一下是否上升就行 https://codeforces.com/contest/1856/submission/217275334  B题直接贪心前面优先放最小的最后一个放最大的 然后如果重复了就到前面去看能不能调整一下 https://codeforces.......
  • LeetCode 周赛上分之旅 #38 结合排序不等式的动态规划
    ⭐️本文已收录到AndroidFamily,技术和职场问题,请关注公众号[彭旭锐]和BaguTreePro知识星球提问。学习数据结构与算法的关键在于掌握问题背后的算法思维框架,你的思考越抽象,它能覆盖的问题域就越广,理解难度也更复杂。在这个专栏里,小彭与你分享每场LeetCode周赛的解题报告,一......
  • Codeforces Round 890 (Div. 2)
    A.TalesofaSort题目大意Alphenhasanarrayofpositiveintegers\(a\)oflengthn.Alphencanperformthefollowingoperation:Forall\(i\)from1ton,replace\(a_i\)with\(\max(0,a_i−1)\).Alphenwillperformtheaboveoperationuntil\(......
  • LeetCode 周赛上分之旅 # 37 多源 BFS 与连通性问题
    ⭐️本文已收录到AndroidFamily,技术和职场问题,请关注公众号[彭旭锐]和BaguTreePro知识星球提问。学习数据结构与算法的关键在于掌握问题背后的算法思维框架,你的思考越抽象,它能覆盖的问题域就越广,理解难度也更复杂。在这个专栏里,小彭与你分享每场LeetCode周赛的解题报告,一......
  • Codeforces Round #890 Div.2
    link题号:1856A~E2A题面:给定一个正整数\(n\)和一个长度为\(n\)的序列\(a\),重复执行以下操作直至\(a\)序列单调不减:\(\forall1\lei\len\),\(a_i=\max(a_i-1,0)\)。求一共需要执行多少次操作。多测,共\(t\)组数据。对于所有数据,保证\(1\let\le500\)......
  • ACCESS 说一说Round,VAL与NZ这三个函数在SQL中的应用
    Round是用来处理浮点计算的,如果不处理,原本一个29.9,它能给你算成29.899500000012345.如果字段属性是文本格式,你再怎么round都没用,所以在这之前,你得把文本类型的字段,转成数字类型的字段.方法也很简单,比如[字段]*1.但是这里又会产生一个新的问题,比如字段下面有null值或者......
  • Codeforces Round 890 (Div. 2) A-E1
    A.TalesofaSort题意:给出一个长为n的数组a,每次操作可以使得所有的数-1,最小不会小于0,问至少需要多少次操作才能使得a变得有序。Solution把数组a排序,从大到小遍历,如果当前的\(a[i]\)不是原来的话,那么要想让它有序,必须进行当前的\(a[i]\)次操作,这样才能使得它有序voidsolve()......
  • 【LGR-148-Div.3】洛谷基础赛 #1 & MGOI Round I
    【LGR-148-Div.3】洛谷基础赛#1&MGOIRoundIT1luoguP9502『MGOI』SimpleRoundI|A.魔法数字\(100pts\)水题,场切了。#include<bits/stdc++.h>usingnamespacestd;#definelllonglong#definesortstable_sort#defineendl'\n'intmain(){ ......
  • 『MGOI』Simple Round I | B. 魔法照相馆 题解
    题目传送门一道模拟题。并不复杂的模拟题,也不需要用到贪心。我们可以创建一个数组来记录每个幕布是否被拉上,统计答案的时候,就看看这块幕布前面有多少个没拉上的,最后如果这块幕布拉上了,就重新放下来就行了。#include<bits/stdc++.h>#definelllonglong#defineINF1e9usi......