博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
poj 3421 X-factor Chains 组合数学
阅读量:6443 次
发布时间:2019-06-23

本文共 1825 字,大约阅读时间需要 6 分钟。

给定一个数X.

1=X0, X1, X2.....Xm = X 是X的因数

求一串因数,要求Xi | Xi+1,即上一个因数能整除下一个因数,

问这条串就的最长长度,和有多少条这样长度的串.

X = p1^a1 * p2^a2 ... pn^an

Xi = p1^b2 * p2^b2 ...pk^bk... pn^bn,

Xi+1 = p1^b2 * p2^b2 ...pk^(bk+1)... pn^bn,

 

要使length最长,只要从1开始,每次只乘以X的一个质因数即可,即length = (a1+a2+...an)

而方法数就是X的质因数的重排列数,way = (a1+a2+...an)!/(a1!a2!...an!)

/*  * poj3421.c  *  *  Created on: 2011-10-10  *      Author: bjfuwangzhu */ #include
#include
#include
#define LL long long #define nmax 1500 int prime[nmax], num[nmax]; int plen, nlen; void mkprime() {
int i, j; memset(prime, -1, sizeof(prime)); for (i = 2; i < nmax; i++) {
if (prime[i]) {
for (j = i + i; j < nmax; j += i) {
prime[j] = 0; } } } for (i = 2, plen = 0; i < nmax; i++) {
if (prime[i]) {
prime[plen++] = i; } } } void solve(int n) {
int i, j, te, cnt, res1; LL res2; te = (int) sqrt(n * 1.0); for (i = 0, nlen = 0; (i < plen) && (prime[i] <= te); i++) {
if (n % prime[i] == 0) {
cnt = 0; while (n % prime[i] == 0) {
n /= prime[i]; cnt++; } num[nlen++] = cnt; } } if (n > 1) {
num[nlen++] = 1; } for (i = 0, res1 = 0; i < nlen; i++) {
res1 += num[i]; } for (i = 2, res2 = 1; i <= res1; i++) {
res2 = res2 * i; } for (i = 0; i < nlen; i++) {
for (j = 2; j <= num[i]; j++) {
res2 = res2 / j; } } printf("%d %lld\n", res1, res2); } int main() {
#ifndef ONLINE_JUDGE freopen("data.in", "r", stdin); #endif int n; mkprime(); while (~scanf("%d", &n)) {
solve(n); } return 0; }

转载于:https://www.cnblogs.com/xiaoxian1369/archive/2011/10/10/2206497.html

你可能感兴趣的文章
5G时代下,优质内容依然短视频源码的核心竞争力
查看>>
别再写getter,setter方法了,用Lombok来简化你的代码吧
查看>>
依赖注入
查看>>
Anconda 3.7安装以及使用详细教程
查看>>
scala 学习笔记二 方法与函数
查看>>
微软职位内部推荐-SOFTWARE ENGINEER II
查看>>
如何用公式编辑器编辑直角三角形符号
查看>>
每日一个Linux命令 地址
查看>>
UI---设置Activity背景为透明
查看>>
晒晒名企大公司的工资收入
查看>>
【DOM编程艺术】显示"文献来源链接表"
查看>>
关于css
查看>>
HTML5 web workers
查看>>
unity3D小小白之刚体(rigidbody)碰撞体(colliders)的简单使用方法
查看>>
为什么需要虚析构函数
查看>>
问题-应用程序加载图标不可用
查看>>
Objective-C 中nil/Nil/NULL/NSNull
查看>>
细聊分布式ID生成方法
查看>>
脸上有酒窝,脖子后有痣,胸前有颗痣,此三种人不能错过
查看>>
用VC++开发Oracle数据库应用程序详解2
查看>>