HDU5446 Unknown Treasure[中国剩余定理+Lucas]

一文详解脉搏血氧测量原理与方法 本文摘要:血氧饱和度(SpO2)是评估人体氧合功能的重要指标,反映血红蛋白携氧能力。其测量基于光电容积描记法(PPG),利用红光(660nm)和红外光(940nm)通过组织时的吸收差异计算。脉搏波特征与心血管状态相关,动脉硬化会影响波形特征。Masimo公司的信号提取技术(SET)通过并行算法有效解决了传统血氧仪在运动、弱灌注情况下的测量误差问题,显著提升了临床监测的准确性和可靠性。该技术已成为血氧监测的金标准,在降低误报率、缩短响应时间方面具有显著优势。 阅读详情

Unknown Treasure

  HDU - 5446





 

题意:

T组数据, 给你n,m,k ,接下来给你k个素数 求C(n,m)%(这k个素数的积)


题解:

题目给我的M 是由(p1*p2*...*pk)组成的,给我的第一反应是中国剩余定理.

那么照着这个方向,我们就必须得得到同余式.

我们的同余式则是有 x%pi=ai  那么我们的x就是我们需要求的组合数.

用Lucas 求出C(n,m)%pi的值,再用中国剩余定理求出x%M的值


(好久没认真写题了,日常划水,现在好不容易写一题博客)


#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<string>
#include<algorithm>
#include<queue>
#include<stack>
#include<set>
#include<map>
#include<vector>
using namespace std;
typedef long long ll;
const int N=15;
const int maxn=1e5+5;
ll n,m;
int k;
int prim[N];
ll a[N];
ll fac[maxn];
void initial(int mod)
{
    fac[0]=1;
    for (int i=1 ; i<mod+1 ; ++i)
        fac[i]=fac[i-1]*i%mod;
}
ll Pow(ll n,ll m,ll mod)
{
    n%=mod;
    ll res=1;
    while (m)
    {
        if (m&1)
            res=res*n%mod;
        n=n*n%mod;
        m>>=1;
    }
    return res;
}
ll C(ll n,ll m,ll p)
{
    if (n<m)
        return 0;
    return fac[n]*Pow(fac[m]*fac[n-m],p-2,p)%p;
}
ll lucas(ll n,ll m,ll p)
{
    if (!n || !m)
        return 1;
    return lucas(n/p,m/p,p)*C(n%p,m%p,p)%p;
}
ll exgcd(ll a,ll b,ll &x,ll &y)
{
    if (!b)
    {
        x=1;
        y=0;
        return a;
    }
    ll gcd=exgcd(b,a%b,x,y);
    ll tmp=x;
    x=y;
    y=tmp-a/b*x;
    return gcd;
}
ll add(ll a,ll b,ll m)
{
    ll ans=0;
    while (b)
    {
        if (b&1)
            ans=(ans+a)%m;
        a=(a+a)%m;
        b>>=1;
    }
    return ans;
}
ll crt(ll a[],int m[],int n)
{
    ll M=1;
    ll ans=0;
    for (int i=0 ; i<n ; ++i)
        M*=m[i];
    for (int i=0 ; i<n ; ++i)
    {
        ll x,y;
        ll Mi=M/m[i];
        exgcd(Mi,m[i],x,y);
        ans=(ans+add(add(x,Mi,M),a[i],M)+M)%M;
    }
    if (ans<0)
        ans+=M;
    return ans;
}
int main()
{
	int T;
	scanf("%d",&T);
	while (T--)
    {
        scanf("%lld%lld%d",&n,&m,&k);
        for (int i=0 ; i<k ; ++i)
        {
            scanf("%d",&prim[i]);
            initial(prim[i]);
            a[i]=lucas(n,m,prim[i]);
        }
        printf("%lld\n",crt(a,prim,k));
    }
	return 0;
}


人形机器人电源系统硬件开发:从原理图设计到PCB布局的完整流程 人形机器人是“移动的智能终端”,其电源系统如同“心脏+血管”:既要为大脑(主控)、肌肉(电机)、感官(传感器)提供稳定能量,又要在有限体积内应对高动态负载(如跳跃时电机瞬间大电流)。本文聚焦“硬件开发”维度,覆盖从需求分析到PCB制板的完整流程,适合硬件工程师、机器人爱好者快速掌握工程实战方法。 阅读详情

相关推荐

西电微机系统课程设计——步进电机开环控制系统设计

西电微机系统课程设计——步进电机开环控制系统设计 一、课程设计目的 1.掌握微机系统总线与各芯片管脚连接方法,提高接口扩展硬件电路的连接能力。 2.加深对 A/D 和并行接口芯片的工作方式和编程方法的理解。 3.搞懂步进电机的工作原理及控制方式,掌握开环控制系统的设计思路和实现方法。 二、课程设计的内容 手动调节电位器旋钮(0V~5V),通过 ADC0809 模拟输入水库水位 0 米~50 米,CPU收到水位信号后,根据水位高度控制步进电机(水闸)进行调节。 三、系统功能与设计要求 基本功能要求 手

OutlierLi's Blog 7523

【刷题记录】 HDU - 5446 Unknown Treasure Lucas定理+中国剩余定理

告诉你n,m和k个互质的素数pi.....pk , 求C(n,m)%(p1*p2*p3*....*pk) (n,m

这里是阿安的博客 505

OpenClaw 快速安装与本地应用实战 —— 每一步都有截图加详细说明,本地AI助手,让打工人也有下属

《OpenClaw 2026开源智能体框架10分钟快速部署指南》摘要:本文提供OpenClaw最新版全平台部署方案,重点解决三大核心问题:1)环境配置优化,通过一键脚本实现3-8分钟快速安装(含国内镜像加速方案);2)初始化配置详解,包含大模型绑定(智普AI/本地模型)与5个高频技能安装;3)实战演示文件自动整理任务。同时总结6类常见故障解决方案,涵盖权限、端口占用等典型问题,确保用户从安装到首个自动化任务落地全程无障碍。特别强调Windows需管理员权限、禁用中文路径等关键注意事项,实现"安装即

weixin_43538316的博客 807

HDU 5446 Unknown Treasure(lucas + 中国剩余定理 + 模拟乘法)

题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5446 题目大意:求C(n, m) % M, 其中M为不同素数的乘积,即M=p1*p2*...*pk, 1≤k≤10。1≤m≤n≤10^18。 分析:如果M是素数,则可以直接用lucas定理来做,但是M不是素数,而是素数的连乘积。令C(n, m)为 X ,则可以利用lucas定理分别计算出 X%...

weixin_30532837的博客 115

PTA 编程题(C语言)-- 然后是几点

PTA 编程题(C语言)-- 然后是几点

LCCprogrammer 5074

CZT与FFT频谱分析方法对比:从任意频带重采样到高精度频谱分析

M = 85 % 输出点数f0 = 70 Hz % 起始频率DELF = 0.4 Hz % 频率步长频率分辨率提高到0.4 Hz分析带宽聚焦在[70, 103.6]Hz更清晰地分辨出78Hz和82Hz的频率分量。

2403_88098319的博客 1859

[HDU](5446)Unknown Treasure ---- 组合数学(卢卡斯定理)+CRT

On the way to the next secret treasure hiding place, the mathematician discovered a cave unknown to the map. The mathematician entered the cave because it is there. Somewhere deep in the cave, she fou...

WangMeow --- ᶘ ᵒᴥᵒᶅ ฅ^•ﻌ•^ฅ 282

MFC实现简单UDP通信(附完整源码)

MFC实现简单UDP通信(附完整源码)

希望我的博客,能帮上你解决学习中工作中所遇到的问题 1108

Hdu 5446 Unknown Treasure(Lucas+中国剩余定理)

题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=5446 思路:Lucas求出所有a[i]=C(n,m)%m[i],中国剩余定理求出最终结果x (LL*LL会爆掉,手写乘法)。 中国剩余定理: 设m1,m2,....mn是两两互质的正整数,对任意给定的整数a1,a2,....an必存在整数,满足         x≡a1 (mod

哆啦AC梦的博客 823

YOLOv8与注意力机制融合:EMA(高效多维注意力)的原理剖析与实战应用

本文介绍了如何在YOLOv8目标检测模型中集成EMA(高效多尺度注意力)机制。主要内容包括:EMA注意力机制的工作原理解析,展示其多尺度特征融合和高效计算特性;详细的环境配置与依赖安装指南;EMA模块的完整代码实现,包含分组处理、空间注意力权重计算和特征融合等关键步骤;以及将EMA集成到YOLOv8网络结构的方法。通过添加EMA模块,可以提升模型对关键特征的关注能力,有效抑制背景干扰,从而增强目标检测性能。本教程提供了从原理到实现的完整解决方案。

m0_64661770的博客 146

【异常】Claude Code CLI工具 模型加载异常 /init报错排查与完整解决方案 There‘s an issue with the selected model (glm-5). It

此类跨厂商模型配置报错,核心诱因是API生态的兼容性不匹配。优先使用工具原生支持的模型体系,可快速解决90%以上的同类报错;若需跨厂商使用目标模型,需完成API端点、鉴权密钥、模型ID的全链路适配,确保全流程配置合规,即可完成异常修复。

奶爸的编程之路,也就一周冷个三天 3699

hdu 5446 Unknown Treasure(Lucas定理+中国剩余定理)

题意:求C(n,m)%(∏pi)C(n, m) \% (∏p_i)。pip_i小于10510^5,mm,nn,以及答案都是101810^{18}。解析:先使用LucasLucas定理求出对于每个pip_i,C(n,m)%piC(n, m) \% p_i的值。 再使用中国剩余定理对模数和余数求解即可。证明:令 total=∏pitotal = ∏p_i,X=Cmn%(∏pi)X = C_n^m \%

小G的ACM之路 1512

[案例四] 智能填写属性工具(支持装配组件还有建模实体属性的批量创建、编辑)

本次案例主要是对上次导出自动导出BOM的一个前处理,要想导出属性,首先的有属性。于是本着学习的态度进行制作,可能有些功能有点别扭(支持装配环境下组件属性的批量填写,支持建模环境下的实体(不包括装配组件实体)——为了减负我把其过滤掉了,一般没人会往装配体里添加进行建模吧,但是不免有奇葩,哈哈哈)。

weixin_47753171的博客 1977

HDU 5446 Unknown Treasure Lucas+中国剩余定理+按位乘

HDU 5446 Unknown Treasure 题意:求C(n, m) %(p[1] * p[2] ··· p[k])     018 思路:这题基本上算是模版题了,Lucas定理求C(n,m),再用中国剩余定理合并模方程,因为LL相乘会越界,所以用到按位乘。   1 #include 2 #include 3 #include 4 #include

Macan - 生活点滴 377

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

HDU5446 Unknown Treasure Lucas+中国剩余定理

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5446 题目大意:求C(n,m) mod M的值,其中M=p1*p2*...*pk 分析:首先我们由Lucas定理可以解决大组合数取模的问题,即,我们先求出Ai=C(n,m) mod pi,然后得到k组线性同余方程组,接下来中国剩余定理解出方程组的解即可。需要注意的是,由于n和m都是

AC_Gibson的专栏 620

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

hdu 5446 Unknown Treasure(lucas+中国剩余定理)

题目链接:hdu 5446 Unknown Treasure lucas+中国剩余定理裸题,注意在中国剩余定理里面,有可能两数相乘爆long long,要用按位乘的方式,但是这样的话exgcd返回值如果是负数就会出错,所以乘之前要取模成正的。 #include #include #include using namespace std; typedef long lon

不慌不忙、不急不躁 2094

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

Lucas定理+中国剩余定理 hdu5446 Unknown Treasure

传送门:点击打开链接 题意:求C(n,m)%p,其中n 思路:这题出的非常好,也揭示了如何处理p不是质数的方案。可以用lucas求C(n,m) n #include #include #include #include #include #include #include #include #include #include #include #include #include #defin

qwb的博客 848

HDU 5446-Unknown Treasure(Lucas+中国剩余定理)

题目地址:HDU 5446 题意:求C(N,M)%P的结果,P为k个素数的乘积。(1≤m≤n≤10^18,1≤k≤10) 思路:先用Lucas定理求出a[]数组,再用CRT求出最终的结果x。比赛时这道题坑了俩小时,还是用的不互质的板子过的,不知道为什么用互质的CRT板子一直Wa,sad。#include <stdio.h> #include <math.h> #include <string.h

Rocky0429 1520

HDU 5446 Unknown Treasure 解题报告(Lucas定理 + 中国剩余定理)

Unknown Treasure Time Limit: 1500/1000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others) Total Submission(s): 168    Accepted Submission(s): 40 Problem Description On the way to

SF-_- 的 ACM 博客 1995

hdu5446 Unknown Treasure(Lucas+中国剩余定理)

Problem Description On the way to the next secret treasure hiding place, the mathematician discovered a cave unknown to the map. The mathematician entered the cave because it is there. Somewhere deep

随心丶而遇的博客 2163

HDU 5446 Unknown Treasure(Lucas定理+中国剩余定理)

题意:给一个组合数C(n, m) (n, m 思路:先用lucas定理求出组合数模除每个质因子的解,然后用中国剩余定理来进行求解,要注意两个long long类型相乘可能会爆,要把乘法改成加法的形式。 #include #include #include using namespace std; typedef long long LL; typedef long long lint;

GODSPEED 462

HDU 5446 Unknown Treasure (lucas + 中国剩余定理)

题意:计算C(n,m)%(M1*M2*M3......*Mn) 其中Mi是互不相同的素数 分析:如果是C(n,m)%素数 我们直接使用lucas, 但是现在的模是多个素数相乘,所以我们需要配合中国剩余定理,先使用lucas对每一个Mi进行取模运算,保留结果,最后使用中国剩余定理 代码: #include &lt;map&gt; #include &lt;set&gt; #include &...

Insist_77的博客 1793

hdu 5446 Unknown Treasure(lucas+中国剩余定理)

Unknown Treasure Time Limit: 1500/1000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others) Total Submission(s): 1992    Accepted Submission(s): 732 Problem Description On the w

ZAQ的博客 3714

hdu 5446 Unknown Treasure(lucas定理+中国剩余定理)

题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5446 解题思路: 首先对于每个质数pi我们,我们可以利用Lucas定理求出Cmn%pi的值,Lucas定理如下: Cmn%p=Cm/pn/p⋅Cm%pn%p%p 然后我们可以利用中国剩余定理求取最后答案: M=∏i=1kpi,Mi=M/pi Cmn%M=∑i

piaocoder 1000

HDU 5446 Unknown Treasure Lucas定理+中国剩余定理

数学本来就弱,现在大半年不练,果断简单题都不会了。。。先用lucas求出x mod 每一个素数结果,然后再用中国剩余定理解出x,不过要自己写乘法,防溢出。。。 #include #include using namespace std; typedef __int64 LL; LL a[12], mm[12]; LL mul(LL a, LL b, LL c) { LL

嗯。 364

HDU 5446 Unknown Treasure (Lucas + 中国剩余定理)

题目大意 求 C(m,n) % (p1 * p2 * … *pk) 其中,( 1 ≤ m ≤ n ≤ 10^18 ,1 ≤ k ≤ 10 ),M = p1 ⋅ p2 ⋅⋅⋅ pk ≤ 10^18 and pi ≤ 10^5,pi 是素数。 分析 由于是对大组合数取模,且n 和 m 均大于10^5,所以很容易想到Lucas定理,但Lucas定理的模数p要求是一个素数, 且只能处理p < 10^5. 因

既不是天才,便做那疯子! 642
上一篇: ZOJ3203 Light Bulb[三分/推公式]
下一篇: HDU2089 不要62[数位DP]
ControlBear
博客等级 码龄11年 34粉丝 51原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值