codeforces 337C Quiz

简介: 点击打开codeforces 思路: 贪心+快速幂 分析: 1 题目要求的是找到这个人的最小的分数 2 题目的数据非常大,很明显是有一个O(1)的算法也就是公式 3 我们考虑n个数分成连续的k个树有几段,设x = n/k , 那么我们就...

点击打开codeforces

思路: 贪心+快速幂

分析:

1 题目要求的是找到这个人的最小的分数

2 题目的数据非常大,很明显是有一个O(1)的算法也就是公式

3 我们考虑n个数分成连续的k个树有几段,设x = n/k , 那么我们就可以知道x段连续的区间里面如果每一段都让它错一个那么我们至少可以答对x*(k-1),现在我们去判断x*(k-1) >= m, 如果是那么答案就是m,否则就去判断剩下的问题就是t = n-x*k 和 剩下的答对问题的个数为z = m-x*(k-1),如果t >= z那么ans就是x*(k-1)+z , 否则的话我们知道应该要把后面的错的个数拿来用,那么我们可以求出拿来用的个数t-z。那么接下来只要去求连续的t+(t-z)*k个数的得分加上后面的一段即可


代码:

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;

const int MOD = 1e9+9;

int n , m , k;

long long Pow(long long m , long long n){
    long long ans = 1;
    while(n){
        if(n&1) 
            ans = (ans*m)%MOD;
        m = (m*m)%MOD;
        n >>= 1;
    }
    return ans;
}

long long getAns(){
    int numk = n/k;
    // 第一次判断
    if(numk*(k-1) >= m)
        return m;
    int rest_n = n-k*numk;
    int rest_m = m-numk*(k-1);
    
    // 第二次判断
    if(rest_m <= rest_n)
        return (numk*(k-1)+rest_m)%MOD;

    // 第三次判断
    int t = rest_m-rest_n;
    int num = rest_n+t*k;
    long long ans = (numk-t)*(k-1)%MOD;
    numk = num/k;
    ans = (ans+num-numk*k)%MOD;
    ans = ans + 2*(k*(Pow(2 , numk)-1))%MOD;
    return ans%MOD;
}

int main(){
    while(scanf("%d%d%d" , &n , &m , &k) != EOF){
        printf("%lld\n" , getAns());
    }
    return 0;
}



目录
相关文章
|
C语言 C++
深入理解指针
深入理解指针
107 2
|
7月前
【YashanDB 知识库】YAS-04003 maximum number of open cursors is xxx
**简介:** 应用运行时遇到错误“YAS-04003 maximum number of open cursors is 310”,原因是打开的游标数量超过默认限制(310)。建议检查代码,确保及时关闭不再使用的游标。如需增加限制,可通过命令 `alter system set OPEN_CURSORS=320;` 调整参数值。请参考官方文档以确定合适的数值。
|
JavaScript Java 测试技术
基于SpringBoot+Vue+uniapp的高校实验室资源综合管理系统的详细设计和实现(源码+lw+部署文档+讲解等)
基于SpringBoot+Vue+uniapp的高校实验室资源综合管理系统的详细设计和实现(源码+lw+部署文档+讲解等)
113 1
|
安全 搜索推荐 vr&ar
脑机接口:人类认知与技术的深度融合
【9月更文挑战第13天】脑机接口(BMI)技术正快速发展,成为连接人类认知与高科技领域的桥梁。本文从定义、原理、应用及挑战等方面全面探讨了这一前沿技术。脑机接口通过测量大脑活动,转化为外部设备的控制信号,已在疾病治疗、运动功能恢复、认知改善及AR/VR等领域展现巨大潜力。然而,技术难度、伦理安全及成本问题仍需克服。未来,随着技术进步,脑机接口有望更广泛地应用于日常生活,引领科技新方向。
|
存储 分布式计算 Hadoop
Hadoop的HDFS数据均衡
【6月更文挑战第13天】
535 3
|
JavaScript 前端开发
【Web 前端】JS中检测数据类型的有哪些?
【4月更文挑战第22天】【Web 前端】JS中检测数据类型的有哪些?
Java的变量的作用域
Java的变量的作用域
190 1
|
传感器 算法 Linux
总线驱动---IIC驱动(上)
总线驱动---IIC驱动
326 0
BXA
|
缓存 Kubernetes 负载均衡
如何优化Kubernetes的性能和资源利用率优化
根据业务实际需求可以添加或删除节点。如果我们的业务中有一段时间流量比较大可以考虑增加节点来增加集群的承载能力,等过了这段时间之后就可以减少节点了以节省成本
BXA
13226 2
|
存储 Linux Python
Linux命令行上传文件到百度网盘
最近在学习 MySQL 的 bin-log 时候考虑到数据备份的问题,突然想到如果能将数据通过 Linux 命令行方式备份到百度网盘,那是一件多么牛逼的事情。百度网盘有免费的 2TB 存储空间,而且有百度做靠山,不怕数据丢失,安全可靠。
3413 0