Xiao Ming's Hope HDU - 4349(Lucas定理)

lammps教程:FeNiCr合金多晶结构建模方法 大家好,我是小马老师。 本文介绍合金多晶模型的建模过程,使用的软件为Atomsk。 Atomsk是一个开源软件,可运行在windows、linux等多种操作系统上,本文使用windows版的Atomsk实现建模,其他操作系统的建模命令基本相同。 建模过程如下: 1. 生成单晶Fe晶胞 atomsk --create fcc 3.65 Fe Fe.xsf 2. 建立多晶节点文件polycrystal.txt 新建一个文本文件polycrystal.txt,文件内容为: box 200 100 200 ran 阅读详情
   

Xiao Ming's Hope

HDU - 4349
Xiao Ming likes counting numbers very much, especially he is fond of counting odd numbers. Maybe he thinks it is the best way to show he is alone without a girl friend. The day 2011.11.11 comes. Seeing classmates walking with their girl friends, he coundn't help running into his classroom, and then opened his maths book preparing to count odd numbers. He looked at his book, then he found a question "C (n,0)+C (n,1)+C (n,2)+...+C (n,n)=?". Of course, Xiao Ming knew the answer, but he didn't care about that , What he wanted to know was that how many odd numbers there were? Then he began to count odd numbers. When n is equal to 1, C (1,0)=C (1,1)=1, there are 2 odd numbers. When n is equal to 2, C (2,0)=C (2,2)=1, there are 2 odd numbers...... Suddenly, he found a girl was watching him counting odd numbers. In order to show his gifts on maths, he wrote several big numbers what n would be equal to, but he found it was impossible to finished his tasks, then he sent a piece of information to you, and wanted you a excellent programmer to help him, he really didn't want to let her down. Can you help him?

Input
Each line contains a integer n(1<=n<=10 8)
Output
A single line with the number of odd numbers of C (n,0),C (n,1),C (n,2)...C (n,n).
Sample Input
1
2
11
Sample Output
2
2
8
这道题需要使用卢卡斯定理,什么事卢卡斯定理呢 下面只是简单说一下什么事卢卡斯定理和代码实现,不做证明

首先,Lucas(卢卡斯)定理是什么?有什么用?

Lucas定理是用来求 C(n,m) mod p,p为素数的值。(注意:p一定是素数)

Lucas定理用来解决大组合数求模是很有用的。

For non-negative integers m and n and a prime p, the following congruence relation holds:

where

and

are the base  p  expansions of  m  and  n  respectively.
即变成位运算更简单点说C(A,B)≡C(a[n],b[n])*C(a[n-1],b[n-1])*C(a[n-2],b[n-2])*...C(a[0]*b[0])%p,数组里面存的是二进制位 递归方程:(C(n%p, m%p)*Lucas(n/p, m/p))%p。(递归出口为m==0,return 1)
实现:
    #include<bits/stdc++.h>  
    using namespace std;  
    typedef long long ll;  
    const int N =1e5;  
    ll n, m, p, fac[N];  
    void init()  
    {  
        int i;  
        fac[0] =1;  
        for(i =1; i <= p; i++)  
            fac[i] = fac[i-1]*i % p;  
    }  
    ll q_pow(ll a, ll b)  
    {  
        ll  ans =1;  
        while(b)  
        {  
            if(b &1)  ans = ans * a % p;  
            b>>=1;  
            a = a*a % p;     
        }  
        return  ans;  
    }  
      
    ll C(ll n, ll m)  
    {  
        if(m > n)  return 0;  
        return  fac[n]*q_pow(fac[m]*fac[n-m], p-2) % p;  
    }  
      
    ll Lucas(ll n, ll m )  
    {  
        if(m ==0)  return 1;  
        else return  (C(n%p, m%p)*Lucas(n/p, m/p))%p;  
    }  
      
    int main()  
    {  
        int t;  
        scanf("%d", &t);  
        while(t--)  
        {  
            scanf("%I64d%I64d%I64d", &n, &m, &p);  
            init();  
            printf("%I64d\n", Lucas(n, m));  
        }  
        return 0;  
    }  

下面是这道题的解释和代码: C(A,B)≡C(a[n],b[n])*C(a[n-1],b[n-1])*C(a[n-2],b[n-2])*...C(a[0]*b[0])%p。这里p是2。如果A为10010。B从0 -> 10010枚举。C(0,1)为0。如果n的二进制串中该位置为0,那么要让C(A,B)%2==1那么,只能让m的二进制对应位置为0,对于n的二进制中为1的位置,m的二进制对应位置为0或1的结果都是1。所以结果就是n的二进制中1的位置取2或1的所有可能。即2^k,k为n的二进制中1的个数。
code:
#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
using namespace std;
int main(){
    int n;
    while(~scanf("%d",&n)){
        int sum = 0;
        while(n){
            if(n&1){
                sum++;
            }
            n >>= 1;
        }
        printf("%d\n",(int)pow(2,sum));
    }
    return 0;
}








水与光的奇妙“切割之舞”:水导激光切割技术探秘 水导激光切割技术的诞生,是材料加工领域不断追求高精度、高质量加工的成果。传统激光切割技术在加工过程中,材料会因瞬间高温而产生热变形、热影响区大以及切割面粗糙等问题,这些弊端在对一些高精度、热敏性材料的加工中尤为突出 ,迫切需要一种新的技术来克服这些难题。水导激光切割技术的起源可以追溯到 20 世纪 80 年代。1986 年,德国公司 Aesculap-Werke AG 首次提出了将水流引入激光切割过程的创新想法,并制造出首代水导激光设备。不过,当时的技术尚处于雏形阶段,仅仅是在光纤出口添加了一小柱水流,激光 阅读详情

相关推荐

【Matlab/Unity】跨平台UDP通信实战:从数据发送到实时可视化

本文详细介绍了Matlab与Unity之间通过UDP协议实现跨平台通信的实战方法,涵盖数据发送、接收和实时可视化全流程。针对科研仿真和工业设计场景,提供优化代码示例和性能对比数据,帮助开发者解决低延迟传输、线程安全等关键问题,显著提升跨平台协作效率。

weixin_29044713的博客 153

HDU4349-Xiao Ming's Hope(Lucas定理)

Xiao Ming's Hope Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 2435    Accepted Submission(s): 1674 Problem Description Xiao Ming

du_lun的博客 558

Zemax操作40--序列模式中LD光源模拟

LD模拟

lzy750750的博客 9121

HDU 4349 Xiao Ming's Hope(Lucas定理、C[n][m]为奇数的个数)

题目链接: HDU 4349 Xiao Ming’s Hope 题意: 给定nn求Cmn(0≤m≤n,n≤108)为奇数的mC_{n}^{m}(0\leq m\leq n,n\leq 10^8)为奇数的m个数。 分析: 即Cmn %2=1的m个数C_{n}^{m}\ \%2=1的m个数,考虑将n和mn和m都表示成22的幂次组合形式,则任意的系数ni和min_i和m_i非0即1.因为C00=

ramay7 604

虚拟机安装Centos8.5

Centos8.5

weixin_63604047的博客 958

SAP Group Reporting入门指南(11)--配置

这里选择的是FS项目目标属性,FS项目有四个目标属性,比如上图配置的是抵消目标属性,所以就去找触发FS项目的抵消目标属性配置的是哪个FS项目,就以这个FS项目作为贷方。这里选择的是FS项目目标属性,FS项目有四个目标属性,比如上图配置的是抵消目标属性,所以就去找源FS项目的抵消目标属性配置的是哪个FS项目,就以这个FS项目作为借方。例如,添加一个包含用于存储百分比的 FS 项的选项。这里选择的是FS项目的角色属性值,如果这里定义了,那么就从FS项目中找到FS项目角色属性值与之匹配的FS项目作为贷方。

bflyfish的博客 568

HDU4349 Xiao Ming's Hope Lucas定理

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4349 题目大意:找出杨辉三角第n+1行中有多少个奇数。 分析:n的范围比较大(10^8数量级),考虑到大组合数取模(找奇数,即对2取模)的问题,自然而然就想到Lucas了(关于Lucas定理:点击打开链接)。我们知道对于求C(n,m)mod p,Lucas定理是把组合数中的n和m换

AC_Gibson的专栏 647

【C语言趣味教程】(0) 专栏介绍

这是一套C 语言趣味教学专栏,目前正在火热连载中,欢迎猛戳订阅!本专栏保证篇篇精品,继续保持本人一贯的幽默式写作风格,当然,在有趣的同时也同样会保证文章的质量,旨在能够产出"有趣的干货" !本系列教程不管是零基础还是有基础的读者都可以阅读,可以先看看目录!标题前带星号 (*) 的部分不建议初学者阅读,因为内容难免会超出当前章节的知识点,面向的是对 C 语言有一定基础或已经学过

有道无术, 术尚可求。有术无道, 止于术。 2万+

hdu 4349 Xiao Ming's Hope(Lucas定理)

题意:求C(n,0),C(n,1),C(n,2)……C(n,n)中奇数的个数。 思路:Lucas定理的一个推论,把C(n,m)看做用二进制表示,那么为奇数的条件是n的每一位都大于等于m的对应位,因此答案是2^(n的二进制表示中1的个数)。 代码: #include #include #include #include #include #include #include #include #

绝望的乐园 828

HTML5+CSS3+JS小实例:焦点图波浪切换动画特效

实例:焦点图波浪切换动画特效。字体图标库:Font Awesome。技术栈:HTML+CSS+JS。

艾恩小灰灰的博客 907

混合精度训练与推理:平衡性能与效率

在深度学习领域,模型的训练和推理通常需要大量的计算资源和时间。随着模型规模的不断增大,如大型语言模型、复杂的视觉模型等,对计算资源的需求也呈指数级增长。混合精度训练与推理技术应运而生,它通过在训练和推理过程中同时使用不同精度的数据类型,在保证模型性能的前提下,显著提高计算效率,减少内存占用。本文的目的是全面介绍混合精度训练与推理技术,包括其原理、实现方法、应用场景以及相关工具和资源,帮助读者深入理解并掌握该技术,从而在实际项目中更好地平衡性能与效率。

操作系统内核探秘的博客 1068

[HDU 4349] Xiao Ming's Hope (lucas定理)

HDU - 4349 给定n求满足 C(n,m)为奇数的 m的个数 首先朴素的想法是把每一个组合数都求出来 但是组合数比较大,所以自然的就想到 mod 2 所以很关键的一点是要转化为 C(n,m)%2 即 C(n,m)%2 = 1 的m的个数 利用lucas定理展开,审视乘积中的每一个组合数 由于 C(0,0) = C(1,0) = C(1,1) = 1,C(0,1) = 0 所以要

MisDeer's blog 300

yolov26改进 | Neck篇 | 利用Gold-YOLO改进yolov26对小目标检测能力(全网独家首发)

本文介绍利用Gold-YOLO的Neck改进YOLOv26,通过信息聚集—分发机制GD,先全局汇聚不同层级特征,再将融合后的全局信息重新注入各尺度分支,增强浅层细节与深层语义之间的交互,减少传统Neck逐层传递造成的信息损失。该结构虽然融合路径更长,但能够在不过度增加延迟的前提下提升多尺度目标检测能力,尤其适合大小目标并存、尺度变化明显和复杂背景场景。本文将讲解GD机制、Neck替换、模块注册与配置方法,并提供完整代码、配置文件及Codex修改思路,方便直接复现、实验对比和二次创新。

Snu77的博客 293

hdu - 4349 - Xiao Ming's Hope - 大大的Lucas定理 && 小小的乘法逆元

首先给出这个Lucas定理: A、B是非负整数,p是质数。AB写成p进制:A=a[n]a[n-1]...a[0],B=b[n]b[n-1]...b[0]。 则组合数C(A,B)与C(a[n],b[n])*C(a[n-1],b[n-1])*...*C(a[0],b[0])  modp同余 即:Lucas(n,m,p)=c(n%p,m%p)*Lucas(n/p,m/p,p)

Julyana_Lin_夜 4690

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

HDU - 4349 Xiao Ming's Hope lucas定理

题目:求c(n,0),c(n,1),...,c(n,n)中有多少个奇数 思路: C(n,m)%2,那么由lucas定理,我们可以写成二进制的形式观察, 比如 n=1001101,m是从000000到1001101的枚举,我们知道在该定理中 C(0,1)=0,因此如果n=1001101的0对应位置的m二进制位为1那么C(n,m) % 2==0,因此m对应n为0的 位置只能填0,而1的位置填

ACVevtor的博客 433

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

HDU 4349 Xiao Ming's Hope (Lucas定理详解+推理过程)

Problem Description \quadXiao Ming likes counting numbers very much, especially he is fond of counting odd numbers. Maybe he thinks it is the best way to show he is alone without a girl friend. The da...

邵光亮的博客 402

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

HDU 4349-Xiao Ming's Hope(Lucas定理的推广)

题目地址:HDU 4349 题意:求C(n,0),C(n,1),C(n,2)…C(n,n).当中有多少个奇数(1<=n<=10^8) 思路: 在这里首先给出一个判断组合数奇偶性的一个规律:如果(n&m)==m,那么C(n,m)为奇数,否则为偶数 咱这里涉及的数值太大,所以并不能用。 其实本题是Lucas定理推导题,我们分析一下 C(n,m)%2,那么由lucas定理,我们可以写成二进制的形

Rocky0429 988

HDU 4349 Xiao Ming's Hope(Lucas定理的推导)

Xiao Ming's Hope Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 1294    Accepted Submission(s): 875 Problem Description Xiao Ming like

风尘_浪子 1524

hdu 4349 Xiao Ming's Hope (Lucas定理推导)

题意:求C(n,0),C(n,1),C(n,2)...C(n,n).奇数的个数 思路:我们分析C(n,m)%2,那么由Lucas定理可知,n和m可以写成二进制的形式,假设n=1001101,那么m是0~1001101,我们知道C(0,1)=0,因此如果n=1001101的0对应位置的m二进制位为1那么C(n,m) % 2==0,因此m对应n为0的位置只能填0,而1的位置填0,填...

155

hdu 4349 Xiao Ming's Hope,lucas定理

Xiao Ming's Hope Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 1793    Accepted Submission(s): 1189 Problem Description Xiao Ming

G.D.Retop的专栏 647

hdu 4349 Xiao Ming's Hope (Lucas定理)

Xiao Ming's Hope Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 2160    Accepted Submission(s): 1469 Problem Description Xiao Ming lik

clover_hxy的博客 393

[HDU4349]Xiao Ming's Hope(组合数学Lucas定理)

题目描述传送门题解这题其实就是求∑i=0nCin%2\sum\limits_{i=0}^n C_n^i\%2 利用Lucas定理,每一次将n和i分解成两个二进制数,然后将它们的组合数乘起来 又因为C00=C01=C11=1,C10=0C_0^0=C_1^0=C_1^1=1,C_0^1=0 所以要想使总体为1,当n的二进制位为1时,有0/1两种选择,当n的二进制位为0时,只有0一种选择 所以如

zyf2000 452

HDU 4349 Xiao Ming's Hope (Lucas定理的应用)

HDU 4349 Xiao Ming's Hope (Lucas定理的应用)

Tc的专栏 856

HDU 4349——Xiao Ming's Hope——————【Lucas定理】

Xiao Ming's Hope Time Limit: 2000/1000 MS (Java/Others)Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 1786Accepted Submission(s): 1182 Problem Description Xiao Ming likes cou...

weixin_30482383的博客 95

hdu 4349 Xiao Ming's Hope(Lucas定理)

http://acm.hdu.edu.cn/showproblem.php?pid=4349Lucas定理:A,B是非负整数,P是质数。A、B写成P进制 A=a[n]a[n-1]…a[0] B=b[n]b[n-1]…b[0] 则组合数C(A,B)与C(a[n],b[n])C(a[n-1],b[n-1])…*C(a[0],b[0])mod p同余 即:Lucas(n,m,p)=C(n%p,m%

HJ 433

【HDU】4349Xiao Ming's Hope-Lucas定理推导

                        Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)                                           Total Submission(s): 2618    Accepted Submissio...

红点雷龙XL 226
上一篇: 6-20 No Less Than X in BST(20 point(s))
下一篇: A + B for you again hdu1867(KMP的应用)
Guuuuuu老师儿
博客等级 码龄9年 259粉丝 718原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值