HDU - 4390 Number Sequence 容斥定理

从单片机转FPGA踩坑记:用Quartus II 13.1给老古董CPLD(EPM240)做个交通灯 本文分享了从单片机转向FPGA开发的实战经验,重点介绍了使用Quartus II 13.1为老款CPLD(EPM240)设计交通灯系统的过程。文章详细解析了并行思维与顺序执行的差异,提供了Quartus II环境搭建指南、状态机设计技巧及调试优化方法,帮助开发者顺利过渡到FPGA开发,并实现高效的交通信号灯控制。 阅读详情

题目:

Given a number sequence b 1,b 2…b n. 
Please count how many number sequences a 1,a 2,...,a n satisfy the condition that a1*a 2*...*a n=b 1*b 2*…*b n (a i>1).

Input
The input consists of multiple test cases. 
For each test case, the first line contains an integer n(1<=n<=20). The second line contains n integers which indicate b 1, b 2,...,b n(1<b i<=1000000, b 1*b 2*…*bn<=10 25).
Output
For each test case, please print the answer module 1e9 + 7.
Sample Input
2
3 4
Sample Output
4

Hint
For the sample input, P=3*4=12.
Here are the number sequences that satisfy the condition:
2 6
3 4
4 3
6 2


思路:把每个质因数出现的次数统计出来,假设质数pi,出现的次数为m次,那么就相当于把m个东西放入n个容器中,但是不允许都为空,如果不管是否为空,那么选择的方法有c(n+m-1,n-1)种,然后算出总的方法数,用容斥定理减去不合法的方法数。

代码:

#pragma comment(linker, "/STACK:1024000000,1024000000")
#include<iostream>
#include<algorithm>
#include<ctime>
#include<cstdio>
#include<cmath>
#include<cstring>
#include<string>
#include<vector>
#include<map>
#include<set>
#include<queue>
#include<stack>
#include<list>
#include<numeric>
using namespace std;
#define LL long long
#define ULL unsigned long long
#define INF 1000000000000
#define mm(a,b) memset(a,b,sizeof(a))
#define PP puts("*********************");
template<class T> T f_abs(T a){ return a > 0 ? a : -a; }
template<class T> T gcd(T a, T b){ return b ? gcd(b, a%b) : a; }
template<class T> T lcm(T a,T b){return a/gcd(a,b)*b;}
// 0x3f3f3f3f3f3f3f3f
// 0x3f3f3f3f

const LL MOD=1e9+7;
const int maxn=1e6+50;
bool isprime[maxn];
int prime[maxn],tol;
void make_prime(int n){
    for(int i=0;i<=n;i++)
        isprime[i]=true;
    isprime[0]=isprime[1]=false;
    tol=0;
    for(int i=2;i<=n;i++){
        if(isprime[i])
            prime[tol++]=i;
        for(int j=0;j<tol;j++){
            if(i*prime[j]<=n)
                isprime[i*prime[j]]=false;
            else
                break;
            if(i%prime[j]==0)
                break;
        }
    }
}
vector<int> fac;
int num[405],b[25];
LL c[1005][1005];
LL C(int n,int m){
    return c[n+m-1][n-1];
}
int main(){

    int n;
    make_prime(maxn-50);
    for(int i=0;i<=1000;i++)
        c[i][0]=c[i][i]=1;
    for(int i=1;i<=1000;i++)
        for(int j=1;j<i;j++)
            c[i][j]=(c[i-1][j-1]+c[i-1][j])%MOD;
    while(~scanf("%d",&n)){
        fac.clear();
        for(int i=0;i<n;i++)
            scanf("%d",&b[i]);
        for(int i=0;i<n;i++){
            int x=b[i];
            for(int j=0;j<tol&&prime[j]*prime[j]<=b[i];j++){
                while(x%prime[j]==0){
                    fac.push_back(prime[j]);
                    x/=prime[j];
                }
            }
            if(x>1) fac.push_back(x);
        }
        sort(fac.begin(),fac.end());
        mm(num,0);
        int cnt=0;
        for(int i=0;i<fac.size();i++){
            if(i==0)
                num[++cnt]=1;
            else{
                if(fac[i]==fac[i-1]) num[cnt]++;
                else num[++cnt]=1;
            }
        }
        LL ans=1;
        for(int i=1;i<=cnt;i++)
            ans=(ans*C(n,num[i]))%MOD;
        for(int i=1;i<=n-1;i++){//枚举空容器的个数
            LL tmp=c[n][i];
            for(int j=1;j<=cnt;j++)
                tmp=(tmp*C(n-i,num[j]))%MOD;
//            printf("%d  %lld\n",i,tmp);
            if(i%2==1){
                ans=(ans-tmp)%MOD;
                ans=(ans+MOD)%MOD;
            }
            else
                ans=(ans+tmp)%MOD;
        }
        printf("%lld\n",ans);
    }
    return 0;
}


LSTM cell结构的理解和计算 LSTM是传统RNN网络的扩展,其核心结构是其cell单元,网上LSTM的相关资料繁多,质量参差不齐,下面主要结合LSTM神经网络的详细推导和 Christopher Olah的blog两篇文章中的内容进行说明。主要介绍网络如何计算,为何这么算先不展开:)。前者一副图加上29个公式,简洁明了;后者娓娓道来,适合初学者。首先是LSTM cell最常见的结构图: 这是变形的版本(找不到更清晰的版本了), 阅读详情

相关推荐

hcaptcha逆向实战:从API解析到参数构造的完整链路

本文详细拆解了hcaptcha验证码的逆向实战流程,从环境准备、捕获API与版本号,到解析核心加密逻辑hsw.js,再到构造getcaptcha请求参数,最后完成验证提交。文章重点剖析了motionData、n、c等关键参数的获取与构造方法,为开发者模拟浏览器行为、实现自动化验证提供了清晰的完整链路指南。

ik678901的博客 629

hdu 4390 Number Sequence(组合数学+容斥定理)

Number Sequence Time Limit: 10000/3000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Total Submission(s): 697    Accepted Submission(s): 302 Problem Description Given a num

街角的花街糖 890

Mathtype公式排版避坑指南:固定行距20磅下如何完美显示上下标(实测有效)

本文针对学术论文在固定行距20磅要求下,Mathtype公式上下标显示不全或被裁剪的问题,提供了实测有效的解决方案。文章深入剖析了固定行距与公式排版的冲突原理,并详细指导用户通过调整Mathtype的“定义间距”参数(如下标深度、上标高度),以及利用“格式化公式”功能进行批量处理,确保公式在严格遵守期刊格式要求的同时清晰完整显示。

weixin_29228203的博客 1068

Number Sequence(hdu4390)

Number Sequence Time Limit: 10000/3000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 895 Accepted Submission(s): 374 Problem Description Given a number sequenc...

weixin_30496751的博客 135

VMware17安装教程(附安装包)VMware17小白详细一键安装教程

VMware 17.5 是一款强大的虚拟机软件。本安装教程将为您详细介绍VMware17安装教程其下载、安装步骤及验证方法,助您轻松完成安装,开启虚拟化体验。

2501_91538706的博客 2万+

TP4054充电电路发热严重?手把手教你调整电阻值降低温度(附实测数据)

本文针对TP4054锂电池充电电路发热严重的问题,提供了详细的排错与解决方案。通过分析发热原理,指出核心在于PROG引脚电阻值设定,并手把手指导如何计算和选择正确的电阻以降低充电电流与温度。文末附有不同电阻下的实测温度与性能数据,为电子爱好者和工程师提供了实用的调试参考。

p4q5r6s7t的博客 406

HDU 4390 Number Sequence(容斥)

Number Sequence Given a number sequence b 1,b 2…b n. Please count how many number sequences a 1,a 2,…,a n satisfy the condition that a 1a 2…a n=b 1b 2*…b n (a i>1). Input The input consists of mult...

Tan_JX 212

ABAP 7.40 新语法介绍系列之六:使用 FILTER 关键字对 ABAP 内表进行过滤

笔者之前写过的关于 ABAP 740 新语法的文章:本文介绍另一个新的关键字:FILTER.FILTER 是 ABAP 740 中引入的一个关键字,用于简化数据操作,它能够将内部表(Internal Table)中的数据按特定的条件进行过滤,并生成一个新的内部表。FILTER 的引入旨在使代码更加现代化和高效,尤其是在面对大量数据需要过滤的情况下。传统上,开发人员可能需要使用 LOOP AT 结合条件判断来实现,但使用 FILTER 关键字后,代码显得更加简洁且易于维护。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1167

HDU 4390 Number Sequence(容斥原理)

Number Sequence Time Limit: 10000/3000 MS (Java/Others)Memory Limit: 65536/65536 K (Java/Others)Total Submission(s): 822Accepted Submission(s): 339 Problem Description Given a number sequen...

weixin_30544657的博客 154

keras tensorflow 的lstm的新冠疫情感染人数预测 附完整代码数据 可直接运行

keras tensorflow 的lstm的新冠疫情感染人数预测 附完整代码数据 可直接运行

847

ICLR 2025 | MambaPEFT: 探索针对Mamba的参数高效微调方法

通过利用海量数据构建大型模型,基于Transformer的模型生态系统已逐步确立。参数高效微调(PEFT)是一项至关重要的技术,它能以最低成本将这些模型应用于下游任务,同时实现高效的性能表现。最近,基于状态空间模型(SSM)的Mamba模型作为Transformer的潜在替代方案受到了广泛关注。尽管已经提出了许多基于Mamba的大规模模型,但如何高效地将预训练的Mamba模型应用于下游任务仍有待研究。在本文中,作者对适用于Mamba的PEFT方法展开了探索性分析。

小白学视觉 326

hdu 4390 Number Sequence

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4390题目大意:给一些数,求出这些数的乘积,再把这个积分解成n个大于一的因子,问有多少种情况。解题思路:没想到,看了别人的。别人的思路是统计这每个质因子的对于n个数出现的次数。再用容斥定理求出结果。把每个质因子分到n个数中是总的情况,再减去n个数中至少有一个数没有分到质因子的情况,就是每个数都分到质因子的

单木的专栏 320

SAP ABAP Web Service 的创建与消费:保姆级教程

SOAP 定义了消息的格式和传输规则,使得 Web Service 可以在不同的操作系统和网络环境中通信。通过 WSDL,服务的提供者可以明确地定义服务的功能,而服务的使用者则可以通过解析 WSDL 文件,了解如何正确地调用该服务。它封装了与 Web 服务通信的所有复杂性,如消息格式的构建、传输协议的选择、请求的发送和响应的处理等。除了本文介绍的 ABAP 编程语言之外,我们还可以通过 Java,Node.js,C++,C#,Python 等其他编程语言来消费本文创建的 ABAP Web Service.

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 713

HDU4390 Number Sequence 【容斥原理+组合数学】

传送门 Given a number sequence b 1,b 2…b n. Please count how many number sequences a1,a2,...,ana1,a2,...,ana _1,a_ 2,...,a_ n satisfy the condition that a1∗a2∗...∗an=b1∗b2∗…∗bn(ai&amp;gt;1)a1∗a2∗...∗an=b1∗...

tystrwor的博客 223

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

hdu 4390 Number Sequence 容斥原理

将每一个数分解质因数,得到每个质因数出现的次数(和质数本身没有关系),然后就要用到容斥原理了, 也就是将每个质数出现的次数放到n个容器中去,这里要注意下1的情况也就是某个容器里面没有放数。 这样结果=总的方案数-有一个容器没放数+有2个容器没有放数…… 将m个数放入n个容器的方法数有C(n+m-1,n-1)! 代码如下: 1 #include<iostream&gt...

weixin_30525825的博客 119

数学建模模型总结

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

HDU 6061

原题连接: http://acm.hdu.edu.cn/showproblem.php?pid=6061题目的意思可以理解为给定多项式:g(x)∑i=0ncixig(x)\sum_{i=0}^nc_ix^i计算多项式g(x−s)g(x-s)推导:g(x−s)=∑i=0nci(x−s)i=∑i=0n∑k=0i(ci(ik)xk(−s)i−k)=∑k=0n∑i=kn(ci(ik)xk(−s)i−k)=

ZLH_HHHH的博客 1731

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

hdu 4390

链接:http://acm.hdu.edu.cn/showproblem.php?pid=4390 给你n个数(nta1*a2*...*an=b1*b2*…*bn ,并且每个ai要大于1 数据范围1000也可以做 一看就是组合问题,首先,第一步,肯定是先分解质因数,然后得到一个数组a,a[i]表示第i种素数的个数,至于这个素数是什么已经不重要了 然后就相当于依次将每种素数放入n个容器中,记

努力奋斗才能梦想成真 2027

hdu 1465 二项式反演推公式

#include&lt;stdio.h&gt; #include&lt;string.h&gt; #include&lt;queue&gt; #include&lt;bits/stdc++.h&gt; using namespace std; #define LL long long #define inf 0x3f3f3f3f LL fav[55]; /*g[n]=(0~n)(-1)^(n-i...

last_xuanshen的博客 307

hdu 6270 Marriage

题解:常见的二项式反演,用启发式合并(每次选最小的两个集合作NTT,类比下线段树)加速NTT即可。复杂度(n logn l ogn) #include"bits/stdc++.h" using namespace std; typedef long long LL; const int MX = 4e5+7; const int mod = 998244353; const int P = 9...

qq_18869763的博客 478

hdu 3622 (twosat)

Bomb Game Time Limit: 10000/3000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 3090    Accepted Submission(s): 1044 Problem Description Robbie is playi

勿忘初衷 1190

HDU 4390

1 #include<stdio.h> 2 #include<string.h> 3 typedef long long LL; 4 const int N = 1000001; 5 const int MOD = 1000000007; 6 bool isprime[N];//判断某一个数是不是素数 7 int nprime;//质数个数 ...

weixin_30386713的博客 168

HDU 1465 :不容易系列之一(错排问题,二项式反演)

从题意来看,就是求 n 个人的错排方案数。 考虑递推的方法:nnn 个人错排,nnn 一定不在自己位置上,考虑 nnn 站在 其它 n−1n - 1n−1 个人中某一个人的位置,显然这样能将所有情况分成不相交的情况。 假设 nnn 站在了 iii 的位置上,那么根据 iii 是否站在 nnn 的位置上可以再将情况分成两种: 1:iii 不在 nnn 的位置上,这相当于 n−1n - 1n−1个...

qq_41997978的博客 524

【BZOJ2839】集合计数 【容斥原理】【二项式反演】

题意:一个有nn个元素的集合有2n2n个不同子集(包含空集),现在要在这2N2N个集合中取出若干集合(至少一个),使得它们的交集的元素个数为kk,求取法的方案数,答案模109+7109+7。 题解:我们先考虑有多少种取法,使得这些集合的交的大小至少为kk。答案记为α(k)α(k)。显然α(k)=Ckn×(22n−k−1)α(k)=Cnk×(22n−k−1),相当...

weixin_30511107的博客 232

HDU 4390 Number Sequence (容斥原理+组合计数)

HDU 4390题意:大概就是这样,不翻译了: Given a number sequence b1,b2…bn.b_1,b_2…b_n. Please count how many number sequences a1,a2,...,ana_1,a_2,...,a_n satisfy the condition thata1∗a2∗...∗an=b1∗b2∗…∗bn(ai,bi>1). a_

a novice 1251

#HDU4390#表达式计数(第二类Stirling + 容斥)

[HDU4390]表达式计数 时间限制: 1 Sec  内存限制: 128 MB 题目描述 给出n个数,b1,b2,b3……bn,构造n个数,a1,a2,……an(ai>1),使得a1*a2*a3……an=b1*b2……bn; 问一共有多少种数列a1,a2,……an满足上述条件。 输入 包含多组输入数据 每组数据第一行有1个整数n(1 每组数据第

ElaineZXY的博客 833

hdu6363组合数学+容斥+扩展欧拉

参考:DLS的代码orz,官方题解   前置技能: 1.N个相同的球放K个不同盒子,可以空盒:C(n+k-1,k-1)(插板法可证) 2.第二行到第三行可以归纳证明 3.扩展欧拉公式,phi(p)=p-1 #include&lt;bits/stdc++.h&gt; #define ll long long using namespace std; const int mod=1e9+...

animalcoder 463
上一篇: HDU - 4466 Triangle
下一篇: HDU - 3723 Delta Wave 卡特兰数
我不会额
博客等级 码龄11年 2粉丝 173原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值