hdu 5407 CRB and Candies(素数筛选法,除法取模(乘法逆元))

基于MATLAB的拉盖尔-高斯光束叠加相位模拟 首先,我们需要设置模拟所需的参数,如光腰半径、传播距离、光束的角动量等。其中,(U)表示光束的电场复振幅,(r)和(\phi)分别是极坐标系下的径向和角向坐标,(z)是传播距离,(A)是归一化系数,(w_p)是光束的光腰半径,(L_p^q)是拉盖尔多项式,(k)是波数,(l)是光束的角动量。通过修改模拟参数,如光腰半径、传播距离、角动量等,您可以进一步探索和理解拉盖尔-高斯光束的叠加相位效应。拉盖尔-高斯光束是一种特殊的光束模式,具有广泛的应用领域,包括光学信息处理、激光加工和量子光学等。 阅读详情

题目链接:

http://acm.hdu.edu.cn/showproblem.php?pid=5407

解题思路:

官方题解:

The problem is just to calculate g(N)\ =\ LCM(C(N,0), C(N,1), ..., C(N, N))g(N) = LCM(C(N,0),C(N,1),...,C(N,N)).

Introducing function f(n)\ =\ LCM(1, 2, ..., n)f(n) = LCM(1,2,...,n), the fact g(n)\ =\ f(n+1) / (n+1)g(n) = f(n+1)/(n+1) holds.

We calculate f(n)f(n) in the following way.

f(1)=1f(1)=1.

If n\ =p^{k}n =p​k​​ then f(n)\ =\ f(n-1) \times \ pf(n) = f(n−1)× p, else f(n)\ =\ f(n-1)f(n) = f(n−1).

Time complexity:O(N\cdot logN)O(N⋅logN)

如果不会做,可以取个巧,已知前n项,可以在这个网站找找规律再做。。。http://oeis.org/?language=english

  • 求
    LCM((n0),(n1)…(nn))
  • 令
    g(n)=LCM((n0),(n1)…(nn))
    以及
    f(n)=LCM(1,2,…n)
    则有
    g(n)=f(n+1)n+1
  • 显然 f(1)=1 ,考虑 f(n) 的质因数分解形式,知道

    f(n)=⎧⎩⎨f(n−1) * p,f(n−1),if n=pkif n!=pk
    其中 p 表示一个质数,即判断 n 是否能表达成某个质数的整数 k 次方.

  • 最后的除以 n+1 部分需要用逆元处理一下

证明过程如下:

http://www.zhihu.com/question/34859879/answer/60168919

http://arxiv.org/pdf/0906.2295v2.pdf

首先用素数筛选法求出1~1000000之间的素数,然后再计算f[n],但是计算f(n)的时候不能直接除以(n+1),应乘以其逆元. 

下面有两种求逆元的模板:

1.利用扩展欧几里德算法求逆元

ll extend_gcd(ll a,ll b,ll &x,ll &y){
    if(a == 0 && b == 0)
        return -1;//无最大公约数
    if(b == 0){
        x = 1;
        y = 0;
        return a;
    }
    ll d = extend_gcd(b,a%b,y,x);
    y -= a/b*x;
    return d;
}

//*********求逆元素*******************
//ax = 1(mod n)
ll mod_reverse(ll a,ll n)
{
    ll x,y;
    ll d = extend_gcd(a,n,x,y);
    if(d == 1)
        return (x%n+n)%n;
    else
        return -1;
}

2.利用快速幂求逆元

ll pow_mod(ll x, int n) {
    ll ret = 1;
    while (n) {
        if (n&1)
            ret = ret * x % MOD;
        x = x * x % MOD;
        n >>= 1;
    }
    return ret;
}

ll mod_reverse(ll x) {
    return pow_mod(x, MOD-2);
}


AC代码:

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

typedef long long ll;
const int MOD = 1000000007;
const int N = 1000005;
ll f[N];
int nprime;
int vis[N];
int prime[80000];

void getprime(){
    nprime = 0;
    memset(vis,0,sizeof(vis));
    memset(prime,0,sizeof(prime));
    for(int i = 2; i <= N-5; i++){
        int t = (N-5)/i;
        for(int j = 2; j <= t; j++){
            vis[i*j] = 1;
        }
    }
    for(int i = 2; i <= N-5; i++){
        if(!vis[i])
            prime[nprime++] = i;
    }
    memset(vis,0,sizeof(vis));
    for(int i = 0; i < nprime; i++){
        ll a = prime[i];
        ll b = a;
        for(; a < N; a*=b)
            vis[a] = b;
    }
}

void init(){
    getprime();
    f[1] = 1;
    for(int i = 2; i <= N-4; i++){
        if(vis[i])
            f[i] = f[i-1]*vis[i]%MOD;
        else
            f[i] = f[i-1];
        f[i] %= MOD;
    }
}
/*
ll extend_gcd(ll a,ll b,ll &x,ll &y){
    if(a == 0 && b == 0)
        return -1;//无最大公约数
    if(b == 0){
        x = 1;
        y = 0;
        return a;
    }
    ll d = extend_gcd(b,a%b,y,x);
    y -= a/b*x;
    return d;
}

//*********求逆元素*******************
//ax = 1(mod n)
ll mod_reverse(ll a,ll n)
{
    ll x,y;
    ll d = extend_gcd(a,n,x,y);
    if(d == 1)
        return (x%n+n)%n;
    else
        return -1;
}
*/

ll pow_mod(ll x, int n) {
    ll ret = 1;
    while (n) {
        if (n&1)
            ret = ret * x % MOD;
        x = x * x % MOD;
        n >>= 1;
    }
    return ret;
}

ll mod_reverse(ll x) {
    return pow_mod(x, MOD-2);
}

int main(){
    init();
    int T;
    scanf("%d",&T);
    while(T--){
        int n;
        scanf("%d",&n);
        //ll ni = mod_reverse(n+1,MOD);
        ll ni = mod_reverse(n+1);
        printf("%lld\n",f[n+1]*ni%MOD);
    }
    return 0;
}


SAP-ABAP:SAP数据库视图(Database View)详解-创建 数据库视图是SAP中实现多表关联查询的基础工具,适合简单的跨表查询和权限控制场景。但其功能有限,对于复杂逻辑或高性能需求,建议结合CDS视图或ABAP程序开发。通过合理设计,数据库视图可显著提升开发效率和系统可维护性。它存储在数据库中,但本身不存储数据,仅通过查询动态生成结果。是一种基于物理数据库表的虚拟表,通过关联多个表(使用。 阅读详情

相关推荐

海康VisionMaster图形定位实战:十字形Mark点精准匹配技巧

本文深入解析了海康VisionMaster图形定位模块在工业自动化中实现十字形Mark点精准匹配的实战技巧。文章从ROI设置、核心参数调优(如定位方式、尺度模式、对比度阈值)到工业场景应用与避坑指南,系统性地分享了提升匹配成功率和稳定性的关键步骤,帮助工程师应对复杂现场环境,实现高效、可靠的视觉定位。

weixin_29285605的博客 258

HDU 5407 费马小定理

HDU 5407 题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5407 题意: ,求g(n) 思路: 首先有一个公式,设,,则。公式证明很复杂也没看懂也不想看,好像都是上数列网和打表找规律过的。 那么现在我们有f(n+1)了,要求f(n+1)/(n+1) %(1e9+7),需要用费马小定理来求带模除法的逆元。 原理 对m是素数且

beihai2013 774

简单说说Python中的pip如何换源

【安装包】:pip install 【升级包】:pip install --upgrade 【卸载包】:pip uninstall 【查看已安装的包】:pip list【搜索包】:pip search (注意:pip search功能在pip 10.0.0之后被弃用,建议使用其他方式搜索包,如访问PyPI官网或使用其他搜索引擎)

一捌柒的博客 2667

HDU 5407(2015多校10)-CRB and Candies(组合数最小公倍数+乘法逆元)

题目地址:HDU 5407 题意:CRB有n颗不同的糖果,如今他要吃掉k颗(0&lt;=k&lt;=n),问k取0~n的方案数的最小公倍数是多少。 思路:首先做这道题我们须要必备的几个技能点。 1. LCM(C(n,0), C(n,1),…, C(n,n))=LCM(1,2,3,…n+1)/(n+1)。额,这个有一篇证明Kummer定理 2.(1) 乘法逆元定义: 满...

weixin_33878457的博客 186

「UG/NX」BlockUI 树列表(回调函数)

官方对树控件提供了21种回调函数,树的一些操作可以在这些回调函数中进行操作。

何曾参静谧的博客 1330

OpenGL 进阶系列10 - 光线跟踪实现简介(Ray Tracing)

OpenGL 实现光线跟踪(Ray Tracing)是一个相对复杂但有趣的挑战,通常用于生成高度逼真的图像效果,如反射、折射、阴影等。OpenGL 本身并不是为光线跟踪设计的,但可以通过结合计算着色器和现代 OpenGL 功能实现光线跟踪。光线跟踪的基本思路是从相机(或视点)出发,发射光线并计算这些光线与场景中物体的交点。光线与场景中物体相交的计算。计算交点的光照(基于表面法线、光源位置、材质等)。反射和折射的处理(如果物体是透明或反射的)。

GPU全栈博主 1534

HDU 5407 CRB and Candies (2015多校第10场第一题)素数打表,除法取模(乘法逆元)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5407 题意:求N个不同的糖果吃K个的所有情况的最小公倍数,并取模 思路:简单一推,就知道结果为n的所有排列的LCM,但是直接这样做的话一定超时,所以得换种方式,因为每个n都有唯一解,所以求助于OEIS http://oeis.org/?language=english ,将给出的案例一一输入可得

风尘_浪子 1149

从0到1用OpenClaw打造酒店收益管理系统:数据整合→AI策略迭代全链路落地实战

本文基于三亚某连锁海景酒店真实项目落地经验编写,系统上线3个月,酒店平均入住率从62%提升至80%,RevPAR(平均可售房收入)提升26%,淡季空置率降低46%,完全覆盖中小酒店全场景收益管理需求。本文配套OpenClaw全量Skill代码、工作流配置文件,可直接复用落地。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 491

hdu 5407 组合数的最小公倍数lcm

hdu 5407本题求对于给定数n,求n的所有组合数的最小公倍数 若c|a且b|a, 则lcm(a/c, a/b) = a/gcd(c, b); 因此 lcm(n!/0!n!, n!/1!(n-1)!, n!/2!(n-1)!, n!/i!(n-i)!.....) = n ! / gcd(0!n!, 1!(n-1)!, 2!(n-1)!, i!(n-i)!....

553

拆解全球18大“支付清算”体系:CLS、中国、美国、欧洲、日本、mBridge...

拆解全球18大“支付清算”体系:CLS、中国、美国、欧洲、日本、mBridge...

银行信息系统应用架构详解 883

Claude Code 完整详解(Anthropic 官方 AI 编程 Agent)

它是运行在终端(Terminal)的 AI 编程代理,不是普通 IDE 插件;你用自然语言发指令,它自主规划步骤、读写项目文件、执行系统命令、排查 Bug、处理 Git 工作流,是能真正动手干活的 AI 程序员。真正的AI 开发代理人,不止写代码,还能执行开发全流程超长全局上下文,大型项目理解碾压传统补全工具终端原生 + IDE 双接入,开发流程无割裂代码质量、可读性、工程规范性普遍偏高权限安全机制完善,修改前预览、可随时中断回滚。

wange6906的博客 3155

hdu5407

首先对于要模一个数的题来说,最后,答案一般可以化成一个式子,比如想这道题,如果用传统的方法来算最小公倍数的话,是没办法达到这个要求的,所以应该经过某种变形,至于这种变形会不会,那就只能凭运气了,我是没运气的那种,丰富的只是积累才能带来好的运气!,大概的证明方法如下。 Legendre's formula 用来求n!因式分解后有多少个p(p为任意一个素数),换种说法就是求,...

222

数字信号处理(一):Xilinx Vivado DDS IP核设计实例(文末附源码)

前言 在数字信号处理时我们经常会用到数字变频,包数字下变频(DDC)和数字上变频(DUC),这其中会用到Xilinx公司的DDS IP核或者Altera公司的NCO IP核来产生本振频率,以现数字域信号频谱搬移。本文我们通过例化Xilinx公司的DDS IP核来产生混频器本振输入频率,并给出Modelsim仿真测试结果。 1、Xilinx DDS IP简介 Xilinx公司的DDS IP核使用AX...

FPGA_Designer 1万+

java乘法逆元与除法取模_hdu 5407 CRB and Candies(素数筛选法,除法取模(乘法逆元))...

题目链接:解题思路:官方题解:The problem is just to calculateg(N) =\ LCM(C(N,0), C(N,1), ..., C(N, N))g(N)=LCM(C(N,0),C(N,1),...,C(N,N)).Introducing functionf(n) =\ LCM(1, 2, ..., n)f(n)=LCM(1,2,...,n),the factg...

weixin_42384267的博客 146

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

HDU5407——最小公倍数+逆元求法——CRB and Candies

逆元 inv 应用于取模运算中 加法 (a + b) % p = a % p + b % p; 减法 (a - b) % p = a % p - b % p; 乘法 (a * b) % p = a % p * b % p; 但是除法 (a / b) % p : a * b % p = c; 已知 b, c, p 求 a a = c * d % p c就是b的逆...

dgjm4087的博客 260

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

hdu 5407 CRB and Candies(数论,LCM,快速幂取模,求逆元)

CRB and Candies Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Total Submission(s): 947    Accepted Submission(s): 442 Problem Description CRB has N di

TUT我好菜啊 675

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

hdu 5407CRB and Candies

Problem Description CRB has N different candies. He is going to eat K candies. He wonders how many combinations he can select. Can you answer his question for all K(0 ≤ K ≤ N)? CRB is too

kingsirre的博客 434

hdu 5407 CRB and Candies(乘法逆元+快速幂)

题意: 求 lcm(C0n,C1n,...,Cnn)=?lcm(C^0_n, C^1_n, ..., C^n_n) = ? 解析: 打表了发现规律是 lcm(1,2,3,……n,n+1)/(n+1)lcm(1,2,3,……n,n+1)/(n+1) 然而lcm怎么求呢? 可以发现随着n的增长好多最小公倍数都是不变的,增长的位置都发生在有新的质因子产生或者原本质因子的次数增大

小G的ACM之路 822

【HDOJ 5407】 CRB and Candies (大犇推导

【HDOJ 5407】 CRB and Candies 赛后看这题题解仅仅有满眼的迷茫……………… g(N) = LCM(C(N,0),C(N,1),...,C(N,N))  f(n)\ =\ LCM(1, 2, ..., n)f(n) = LCM(1,2,...,n), the fact g(n)\ =\ f(n+1) / (n+1)g(n) = f(n+1...

weixin_33869377的博客 126

hdu5407 CRB and Candies

令f(n) = lcm((n, 0), (n, 1),..., (n, n)), g(n) = lcm(1, 2,.., n)。 则有结论:f(n) = g(n + 1) / (n + 1)(证明过程参阅:http://arxiv.org/pdf/0906.2295v2.pdf)。 待求的是ans = f(n) % mod = (g(n + 1) / (n + 1)) % mod =...

weixin_33737774的博客 122

HDU 5407 CRB and Candies(数学 素数表+预处理+快速幂+乘法逆元)——多校练习10

HDU 5407 CRB and Candies(数学 素数表+预处理+快速幂+乘法逆元)——多校练习10

queuelovestack的专栏 1303

CRB and Candies(lcm(C(n,0)..C(n,n)=lcm(1,2,,,n+1)/(n+1)))hdu5407

CRB and Candies Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Total Submission(s): 358    Accepted Submission(s): 160 Problem Description   CRB has N d

寻找&星空の孩子 1753

hdu5407数学

神马鬼?import java.io.BufferedInputStream; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStreamWriter; impor

老李2009 749

hdu-5407(多校2015)

CRB and Candies Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Total Submission(s): 193    Accepted Submission(s): 73 Problem Description CRB has N d

AC之路 940

HDU5407 CRB and Candies 数论

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5407 题目大意:给出一个整数n,我们想知道LCM[ C(n,0),C(n,1),...,C(n,n) ]%mod的值。 分析:对于函数a(n)=LCM[ C(n,0),C(n,1),...,C(n,n) ]和函数b(n)=LCM[ 1,2,3,...,n ],我们有a(n)=b(n

AC_Gibson的专栏 611
上一篇: hdu 5411 CRB and Puzzle(矩阵快速幂)
下一篇: hdu 5416 CRB and Tree(异或运算)
yphacker
博客等级 码龄12年 199粉丝 540原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值