zoukankan      html  css  js  c++  java
  • POJ 3421 X-factor Chains (因式分解+排列组合)

    题意:一条整数链,要求相邻两数前一个整除后一个。给出链尾的数,求链的最大长度以及满足最大长度的不同链的数量。

    类型:因式分解+排列组合

    算法:因式分解的素因子个数即为链长,链中后一个数等于前一个数乘以某素因子,所以链的数量即为这些因子不全相异的全排列数:A!/(a1!a2!a3!..)

    #include <cstdio>
    #include <cmath>
    #include <iostream>
    using namespace std;
    
    typedef long long LL;
    int p[22], a[22];
    int cnt;
    
    int main() {
    	int n, i, j;
    	while (scanf("%d", &n) != EOF) {
    		cnt = 0;
    		for (i = 2; i <= sqrt(n); ++i) { // 质因子分解
    			if (n % i == 0) {
    				p[cnt] = i;
    				n /= i;
    				a[cnt++] = 1;
    			}
    			while (n % i == 0) {
    				a[cnt - 1]++;
    				n /= i;
    			}
    		}
    		if (n > 1) { // 注意点,容易忘记
    			p[cnt] = n;
    			a[cnt++] = 1;
    		}
    		LL ans = 1;
    		int A = 0;
    		for (i = 0; i < cnt; ++i) {
    			A += a[i];
    		}
    		for (i = a[0] + 1; i <= A; ++i) { // 提前除以a[0]!
    			ans *= i;
    		}
    		for (i = 1; i < cnt; ++i) {
    			for (j = 2; j <= a[i]; ++j) {
    				ans /= j;
    			}
    		}
    		printf("%d %lld
    ", A, ans);
    	}
    	return 0;
    }
  • 相关阅读:
    内存溢出
    3.设计模式----TemplateMethod模式
    tomcat 编码问题
    ibatis实现Iterate的使用 (转)
    2.设计模式---Adapter模式
    1.设计模式-------Iterator
    PHP 下载远程图片
    mysql调优 参数说明
    mySQL内存及虚拟内存优化设置
    Firebug入门指南
  • 原文地址:https://www.cnblogs.com/demian/p/7407199.html
Copyright © 2011-2022 走看看