牛客周赛 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)(数学)

本题参考:

怎样快速找到一个可表为无限循环小数的分数的循环节位数? - 知乎 (zhihu.com)

欧拉函数φ(n)的计算及欧拉定理 - 知乎 (zhihu.com)

牛客周赛 Round 6_m0_73618658的博客-CSDN博客

借鉴第一篇知乎大佬回答:假设一个真分数可以表示为 \(\frac{m}{n}, m<n\) ,\(m\)与\(n\)是互素的。 如果\(n\)的因子只含有2和5,也就是说 \(n=2^a5^b\) 那么我们就可以通过在分子分母上同时乘以适合数量的2或者5,将分母表示为10的次方的形式, \(\frac{m}{n}=\frac{p}{10^c}\) , 这就说明这个分数是有限小数。如果\(n\)中完全不含有2和5,那么\(n\)与10互素,根据初等数论中的欧拉定理,存在一个整数 \(a\) ,满足 \(10^{a}\equiv1(\mathrm{mod} \; n)\) ,也就是 \(10^a-1\) 可以整除\(n\). 所以可以通过分子分母同时乘以一些因子,将分母变成\(9999...9\)的形式, \(\frac{m}{n}=\frac{p}{10^a-1}=\frac{p}{9\cdots 9}\) 。这时9的个数 \(a\) 就是循环节的位数,分子上的整数通过在前面补0,使得分子分母位数一致,此时分子就是循环节。另外还有一种情况,就是 \(n\) 中既包含 2,5 也包含其他素因子, \(n=2^a 5^b q_1^{c_1}q_2^{c_2}\cdots\) 那么,我们可以补充2和5,凑出10的整次方,\(\frac{m}{n}=\frac{p}{10^dq}\) , \(q\)与10互素。然后 \(p\) 可能大于 \(q\) , 令 \(p=kq+r,r<q\) , 注意k是可以等于0的。于是 \(\frac{m}{n}=\frac{1}{10^d}(k+\frac{r}{q})=\frac{k}{10^d}+\frac{1}{10^d}\frac{r}{q}\) , 然后这就是一个部分循环小数,从第 \(d+1\) 位开始循环,循环节由 \(\frac{r}{q}\) 经前面的第二种情况来确定。

所以我们可以先对分母化简,然后去计算分母中2和5的数量,数量多的就是循环节前面部分的长度了,然后对分母的因数去遍历找到满足\(10^{i}\equiv1(\mathrm{mod} \; q)\)或者\(10^{\frac{phi(q)}{i}}\equiv1(\mathrm{mod} \; q)\),取最短的循环节即可

#include <bits/stdc++.h>

using i64 = long long;
using i128 = __int128; using namespace std; i64 ksm(i128 a, i64 b, i64 p) {
i128 res = 1;
while (b) {
if (b & 1)res = res * a % p;
b >>= 1;
a = a * a % p;
}
return res;
} i64 phi(i64 x) {
i64 i;
i64 res = x; for (i = 2; i * i <= x; i++) {
if (x % i == 0) {
res = res / i * (i - 1);
while (x % i == 0)x /= i;
}
}
if (x > 1)res = res / x * (x - 1); return res;
} int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr); i64 p,q,c2 = 0, c5 = 0;
cin >> p >> q; q /= gcd(p,q);
while(q % 2 == 0) q/= 2, c2 ++;
while(q % 5 == 0) q/= 5, c5 ++; if(q == 1){
cout << "-1\n";
return 0;
} i64 te = phi(q),ans = 1e16;
for(i64 i = 1;i * i <= te;i ++){
if(te % i == 0){
if(ksm((i128)10, i ,q) == 1) ans = min(ans, i);
if(ksm((i128)10, te / i, q) == 1) ans = min(ans, te / i);
}
} cout << max(c2, c5) << ' ' << ans << '\n'; return 0;
}

牛客周赛 Round 6的更多相关文章

  1. 牛客周赛11TG B-弹钢琴

    链接:https://ac.nowcoder.com/acm/contest/941/B来源:牛客网 题目描述 春希想听和纱弹钢琴! 为了阻止异变的发生,Pi将钢琴魔改了 钢琴上有 N 个键,每个键有 ...

  2. 牛客OI周赛9-提高组题目记录

    牛客OI周赛9-提高组题目记录 昨天晚上做了这一套比赛,觉得题目质量挺高,而且有一些非常有趣而且非常清奇的脑回路在里边,于是记录在此. T1: 扫雷 题目链接 设 \(f_i\) 表示扫到第 \(i\ ...

  3. 牛客OI周赛8-提高组A-用水填坑

    牛客OI周赛8-提高组A-用水填坑 题目 链接: https://ac.nowcoder.com/acm/contest/403/A 来源:牛客网 时间限制:C/C++ 2秒,其他语言4秒 空间限制: ...

  4. 牛客假日团队赛5 F 随机数 BZOJ 1662: [Usaco2006 Nov]Round Numbers 圆环数 (dfs记忆化搜索的数位DP)

    链接:https://ac.nowcoder.com/acm/contest/984/F 来源:牛客网 随机数 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言6 ...

  5. 牛客OI周赛7-提高组 A 小睿睿的等式

    链接:https://ac.nowcoder.com/acm/contest/371/A来源:牛客网 小睿睿在游戏开始时有n根火柴棒,他想知道能摆成形如“A+B=n”的等式且使用的火柴棒数也恰好等于n ...

  6. 牛客OI周赛7-提高组 B小睿睿的询问(ST打表)

    链接:https://ac.nowcoder.com/acm/contest/371/B来源:牛客网 小睿睿的n个妹纸排成一排,每个妹纸有一个颜值val[i].有m个询问,对于每一个询问,小睿睿想知道 ...

  7. 牛客OI周赛7-普及组 解题报告

    出题人好评. 评测机差评. A 救救喵咪 二位偏序.如果数据范围大的话直接树状数组,不过才1000就\(O(n^2)\)暴力就ok了. #include <bits/stdc++.h> s ...

  8. 牛客OI周赛2-提高组

    A.游戏 链接:https://www.nowcoder.com/acm/contest/210/A来源:牛客网 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 131072K,其他语 ...

  9. 牛客OI周赛10-普及组-A眼花缭乱的街市-(加速+二分)

    https://ac.nowcoder.com/acm/contest/901/A 很简单的一道题,全场只有20+AC,卡时间.新学了cin加速语法和数组二分查找的函数调用. 知道有个读写挂,可以加速 ...

  10. 牛客OI周赛11-普及组 B Game with numbers (数学,预处理真因子)

    链接:https://ac.nowcoder.com/acm/contest/942/B 来源:牛客网 Game with numbers 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C+ ...

随机推荐

  1. [flask]统一API响应格式

    前言 在设计API返回内容时,通常需要与前端约定好API返回响应体内容的格式.这样方便前端进行数据反序列化时相应的解析处理,也方便其它服务调用.不同公司有不同的响应内容规范要求,这里以常见的JSON响 ...

  2. 英特尔 Gaudi 加速辅助生成

    随着模型规模的增长,生成式人工智能的实现需要大量的推理资源.这不仅增加了每次生成的成本,而且还增加了用于满足此类请求的功耗.因此,文本生成的推理优化对于降低延迟.基础设施成本以及功耗都至关重要,其可以 ...

  3. 更难、更好、更快、更强:LLM Leaderboard v2 现已发布

    摘要 评估和比较大语言模型 (LLMs) 是一项艰巨的任务.我们 RLHF 团队在一年前就意识到了这一点,当时他们试图复现和比较多个已发布模型的结果.这几乎是不可能完成的任务:论文或营销发布中的得分缺 ...

  4. git连接到https服务器时出现“gnutls_handshake() failed”

    git连接到https服务器时出现"错误: gnutls_handshake()失败" 问题描述 当我尝试使用git连接到任何HTTPS服务器时(例如git clone),它会出现 ...

  5. 高通mm-camera平台 Camera bring up基本调试思路

    原文:https://www.cnblogs.com/thjfk/p/4086001.html 确定硬件 1.首先对照原理图,检查camera module的pin脚连接是否正确. 2.用示波器量Ca ...

  6. K210开发板学习笔记-点亮LED灯

    1. 介绍 和 51 单片机非常像,实验的2个LED灯都是一头接了 +3.3v 电源,控制 LED灯亮的话需要 K210芯片 对应的管脚提供一个低电平. 管脚: 低电平-LED亮 高电平-LED灭 G ...

  7. MySQL执行过程及执行顺序

    一.MySQL执行过程 简单概括: 1.我们在客户端发起一个SQL的查询: 2.连接器判断用户登录以及用户权限: 3.缓存命中,走缓存,直接返回查询结果: 3.缓存没命中,到达分析器,对SQL语句进行 ...

  8. Java常见问题-多线程

    现在有 T1.T2.T3 三个线程,你怎样保证 T2 在 T1 执行完后执行,T3 在 T2 执行完后执行? 这个多线程问题比较简单,可以用 join 方法实现. 在 Java 中 Lock 接口比 ...

  9. 树莓派4B-MAX9814麦克风模块

    树莓派4B-MAX9814麦克风模块 硬件需求 树莓派 MAX9814模块 杜邦线 MAX9814模块 电子特性 实验电路板 实验电路局部 典型工作特性 引角接线 代码展示 import RPi.GP ...

  10. Java-Cookie客户端会话技术

    会话技术 会话:一次对话中包含多次请求和响应 一次会话:浏览器第一次给服务器资源发送请求,会话建立,直到有一方断开为止 功能:在一次会话的范围内的多次请求间,共享数据 方式: 客户端会话技术:Cook ...