2024牛客暑期多校训练营1 A题(A Bit Common )解题思路

前言:

  今年和队友报了牛客暑期多校比赛,写了一下午结果除了签到题之外只写出了一道题(A),签到题没什么好说的,其他题我也没什么好说的(太菜了,根本写不出来),这道题能经过自己推导写出公式其实也蛮有成就感的。

正文:

思路:

题目大意主要是让你从0-2^m中选出长为n的序列(可重复,顺序不同算不同序列),这个序列要求有一子序列按位与的结果为1(注意如果子序列为{1}那么也算满足情况),让你输出可以满足此情况的序列总个数对q取模的结果。

其实这是一道彻彻底底的数学题,只要能把公式推出来其实代码很好实现,重点在于公式的推导。(这公式我还想了蛮久)

对于一些数,要想他们按位与的结果为1,也就是结果二进制表示为……0000000000001(总位数为m),那么这一段数的最后一位就必须都为1,并且其他位的按位与结果都必须为0(对于二进制的其中一位这n个数至少得有一个数的这一位为0,也就是不能出现全为1的情况,总数为2^{n}-1)。根据这种情况,我们可以知道这段序列的情况共有(2^{n}-1)^{m-1}种,很显然这个序列的所有长度大于1的子序列都是满足条件的,这是最完美的情况,但是我们满足条件的子序列只需一个就行了,所以我们可以对这个完美序列进行改数,比如对其中某一个数更改为二进制第一位为0的任意数,更改完之后的序列依旧满足条件(存在满足条件的子序列),这时序列的种类数经分析得知为(2^{n-1}-1)^{m-1}*(2^{m-1})*C_{n}^{1},这是对一个数进行更改的情况,我们还能对更多的数进行更改如此可以知道最终结果为\sum_{0}^{n-1}(2^{n-i})^{m-1}*(2^{m-1})^{i}C_{n}^{i}。最后一边加和一边取余即可得出答案。

注意这边求组合数取模时不能用扩展欧几里得或费马小定理(这两个公式前者要求两数互质,后者要求模数为质数),这边由于模数是未知的所以得用递推公式求解,

代码:

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
int n,m,mod;
ll fact[5005];
ll quickpow(ll base,ll power){//快速幂
	ll ret=1;
	while(power){
		if(power%2) ret=ret*base%mod;
		base=base*base%mod;
		power/=2;
	}
	return ret;
}
void init(){ 
	fact[0]=1;
	for(long long i=1;i<=n;i++)fact[i]=fact[i-1]*i%mod;
	
}
int c[5005][5005];
void init2(){
    for(int i = 0;i<=n;i++)
        for(int j =0;j<=i;j++)
            if(!j)c[i][j]=1;//规定 a 0 = 1
            else c[i][j]=(c[i-1][j]+c[i-1][j-1])%mod;
}
int main(){
	cin>>n>>m>>mod;
	init();init2();
	ll res=quickpow(2,m-1);
	ll ans=0;
	for(int i=0;i<n;i++){
		ans+=((quickpow((quickpow(2,n-i)-1),m-1)%mod*quickpow(res,i)%mod)*c[n][i])%mod;
		ans=ans%mod;
		//cout<<quickpow((quickpow(2,n-i)-1),m-1)<<" "<<quickpow(res,i)<<" "<<C(i,n)<<endl;
		//cout<<ans<<endl;
	}
	cout<<ans<<endl;
	return 0;
}

后记:

  今年也许我们还比较菜,不过好好训练一年我们之后一定会更强!!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/802565.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

django-ckeditor富文本编辑器

一.安装django-ckeditor 1.安装 pip install django-ckeditor2.注册应用 INSTALLED_APPS [...ckeditor&#xff0c; ]3.配置model from ckeditor.fields import RichTextFieldcontent RichTextField()4.在项目中manage.py文件下重新执行迁移&#xff0c;生成迁移文件 py…

常见的数据分析用例 —— 信用卡交易欺诈检测

文章目录 引言数据集分析1. 读入数据并快速浏览2.计算欺诈交易占数据集中交易总数的百分比3. 类别不平衡对模型的影响3.1 总体思路&#xff08;1&#xff09;数据的划分&#xff08;2&#xff09;训练模型&#xff08;3&#xff09;测试模型&#xff08;4&#xff09;解决不平衡…

django报错(二):NotSupportedError:MySQL 8 or later is required (found 5.7.43)

执行python manage.py runserver命令时报版本不支持错误&#xff0c;显示“MySQL 8 or later is required (found 5.7.43)”。如图&#xff1a; 即要MySQL 8或更高版本。但是企业大所数用的还是mysql5.7相关版本。因为5.7之后的8.x版本是付费版本&#xff0c;贸然更新数据库肯定…

python自动化之用flask校验接口token(把token作为参数)

用到的库&#xff1a;flask 实现效果: 写一个接口&#xff0c;需要token正确才能登录 代码&#xff1a; # 导包 from flask import Flask,request,jsonify,json # 创建一个服务 appFlask(__name__) # post请求&#xff0c;路径&#xff1a;/query app.route(/query, met…

框架设计MVC

重点&#xff1a; 1.用户通过界面操作&#xff0c;传输到control&#xff0c;control可以直接去处理View&#xff0c;或者通过模型处理业务逻辑&#xff0c;然后将数据传输给view。 2.control包含了model和view成员。 链接&#xff1a; MVC框架详解_mvc架构-CSDN博客 MVC架…

【香橙派 Orange pi AIpro】| 搭建部署基于Yolov5的车牌识别系统

【香橙派 Orange pi AIpro】| 搭建部署基于Yolov5的车牌识别系统 一、香橙派 Orange pi AIpro 开发板介绍及实物开箱1.1 开发板介绍1.2 产品详情图1.3 开箱实物 二、开发部署预先准备2.1 镜像介绍与烧录2.2 启动开发板2.3 连接开发板 三、基于Yolov5的车牌识别系统3.1 项目介绍…

前端pc和小程序接入快递100(跳转方式和api方式)====实时查询接口

文章目录 跳转方式微信小程序&#xff08;我以uniapp为例&#xff09;pc api接入说明关于签名计算成功示例 跳转方式 没有任何开发成本&#xff0c;直接一键接入 可以直接看官方文档 https://www.kuaidi100.com/openapi/api_wxmp.shtml 微信小程序&#xff08;我以uniapp为例…

知识图谱与 LLM:微调与检索增强生成

Midjourney 的知识图谱聊天机器人的想法。 大型语言模型 (LLM) 的第一波炒作来自 ChatGPT 和类似的基于网络的聊天机器人&#xff0c;这些模型在理解和生成文本方面非常出色&#xff0c;这让人们&#xff08;包括我自己&#xff09;感到震惊。 我们中的许多人登录并测试了它写…

大数据信用查询有哪些问题值得注意呢?

随着大数据技术的不断发展&#xff0c;大数据信用报告成为一种新型的信用风险检测工具&#xff0c;被很多的银行和机构广泛用于信用风险评估&#xff0c;那大数据信用查询有哪些问题值得注意呢?本文就带大家一起去了解一下&#xff0c;希望对你有一定的帮助。 大数据信用查询这…

数据结构——单链表详解(超详细)(2)

前言&#xff1a; 上一篇文章小编简单的介绍了单链表的概念和一些函数的实现&#xff0c;不过为了保证文章的简洁&#xff0c;小编把它分成了两篇来写&#xff0c;这一篇小编紧接上一篇文章继续写单链表函数功能的实现&#xff1a; 目录&#xff1a; 1.单链表剩余函数的编写 1.…

使用Windows Linux 子系统安装 Tensorflow,并使用GPU环境

在Microsoft Store商店安装Ubuntu 20.04 使用 nvidia-smi 命令查看GPU信息&#xff0c;查看支持的CUDA版本&#xff0c;这里最高支持11.7 安装cuda工具集 进入官网&#xff1a;CUDA Toolkit Archive | NVIDIA Developer&#xff0c;现在对应版本&#xff0c;点击 配置平台&…

【Django+Vue3 线上教育平台项目实战】登录功能模块之短信登录与钉钉三方登录

文章目录 前言一、几个关键概念1.HTTP无状态性2.Session机制3.Token认证4.JWT 二、通过手机号验证码登录1.前端短信登录界面2.发送短信接口与短信登录接口3.Vue 设置interceptors拦截器4. 服务端验证采用自定义中间件方式实现5. 操作流程及效果图如下&#xff1a; 三、通过第三…

对某根域的一次渗透测试

前言 两个月之前的一个渗透测试项目是基于某网站根域进行渗透测试&#xff0c;发现该项目其实挺好搞的&#xff0c;就纯粹的没有任何防御措施与安全意识所以该项目完成的挺快&#xff0c;但是并没有完成的很好&#xff0c;因为有好几处文件上传没有绕过&#xff08;虽然从一个…

【Java】数据类型及类型转换

数据类型 Java语言的数据类型分为两大类&#xff1a; 基础数据类型引用数据类型 基础数据类型 基础数据类型包括以下8种&#xff1a; 类型名称关键字占用内存取值范围区间描述字节型byte1 字节-128~127-27~27-1短整型short2 字节-32768~32767-215~215-1整型int4 字节-2147…

nftables(7)集合(SETS)

简介 在nftables中&#xff0c;集合&#xff08;sets&#xff09;是一个非常有用的特性&#xff0c;它允许你以集合的形式管理IP地址、端口号等网络元素&#xff0c;从而简化规则的配置和管理。 nftables提供了两种类型的集合&#xff1a;匿名集合和命名集合。 匿名集合&…

高职院校人工智能人才培养成果导向系统构建、实施要点与评量方法

一、引言 近年来&#xff0c;人工智能技术在全球范围内迅速发展&#xff0c;对各行各业产生了深远的影响。高职院校作为培养高技能人才的重要基地&#xff0c;肩负着培养人工智能领域专业人才的重任。为了适应社会对人工智能人才的需求&#xff0c;高职院校需要构建一套科学、…

大模型产品琳琅满目,企业应该如何选择?

AI 和大模型方兴未艾&#xff0c;我们每天都在看到和尝试不同版本、不同品牌的大模型产品&#xff0c;它们的能力各不相同。无论是个人还是企业&#xff0c;都在思考如何尽早地参与进来到大模型的浪潮当中来。 目前&#xff0c;一些先锋企业已经将 AI 和大模型融入到他们的日常…

C#学习

C#学习 1.B站丑萌气质狗C#的循环-判断泛型错误处理面向对象static的使用定义showInfo类和Hero类 在这里插入图片描述 然后在该解决方案add新建一个类库&#xff0c;点击rebuild&#xff0c;会在bin文件夹下生成.dll文件 ![在这里插入图片描述](https://i-blog.csdnimg.cn/direc…

无人机之图传距离的决定因素

一、发射功率&#xff1a;图传设备的发射功率越大&#xff0c;信号能够传播的距离就越远 二、工作频段&#xff1a;不同频段具有不同的传播特性&#xff0c;一些频段在相同条件下可能具有更远的传输距离。 三、天线性能&#xff1a;优质的天线可以增强信号的发送和接收能力&a…

php相关

php相关 ​ 借鉴了小迪安全以及各位大佬的博客&#xff0c;如果一切顺利&#xff0c;会不定期更新。 如果感觉不妥&#xff0c;可以私信删除。 默认有php基础。 文章目录 php相关1. php 缺陷函数1. 与2. MD53. intval()4. preg_match() 2. php特性1. php字符串解析特性2. 杂…