组合数学部分知识点

数学

1.质数,log,二分,题设证明

2.容斥原理 错排公式

3.与一个数a互质,必然是c+ka,c为a以内与a 互质的数字。Happy 2006

4.对于任意的整数n,必然存在一个由不多于两个的数来组成的一个倍数。因为a,aa,aaa……取n+1个,则必有两个模n余数相同,相减即得n的倍数m。而m只由a、0组成。5.对于大的数字,一般用同模定理缩减规模 (a+b)%m=a%m+b%m,(a*b)%m=a%m*b%m

组合数学

加法乘法原理 分类,分步

错排公式 D(n) = (n-1) [D(n-2) + D(n-1)]

第一步,把第n个元素放在一个位置,比如位置k,一共有n-1种方法;

第二步,放编号为k的元素,这时有两种情况:⑴把它放到位置n,那么,对于剩下的n-1个元素,由于第k个元素放到了位置n,剩下n-2个元素就有D(n-2)种方法;⑵第k个元素不把它放到位置n,这时,对于这n-1个元素,有D(n-1)种方法;

/*
Sky Code
求得是n个数中,有多少组(a,b,c,d)的公约数为1,值得注意的是这四个数不一定两两互质。  
所以我们从它的反面考虑,先求出公约数不为1的个数。  
思路:把每个数素数分解,记录不重复素因子所能组成的因子,把这些因子的总数统计,并且统计每个因子是由多少个素因子组成  
如这n个数中含2的个数为a,含3的个数为b,含6的个数为c,那么公约数大于1的总数为p=c(a,4)+c(b,4)-c(c,4),总的个数为c(n,4)  
用c(n,4)-p即为所求
*/

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define MAXN 10000+100

__int64 A[MAXN];
__int64 B[MAXN];
__int64 C[MAXN];
__int64 P[MAXN];
__int64 N;
__int64 num;
__int64 yz;

void dfs()
{
	__int64 i,j;
	__int64 temp,k;

	yz=0;
	for(i=2;i*i<=num;i++)
	{
		if(num%i==0)
		{
			C[yz++]=i;
			while(num%i==0)
				num/=i;

		}
	}
	if(num>1) C[yz++]=num;//C中存放质因子
	for(i=1;i<(1<<yz);i++)
	{
		k=0;temp=1;//排列组合所有质因子,组合成的因子。每一位代表一个因子的C中下标
		for(j=0;j<yz;j++)
			if(i&(1<<j))//判断有哪位就相乘
			{
				k++;
				temp*=C[j];
			}
		B[temp]++;//记录这个因子有多少个
		A[temp]=k;//记录这个因子由几个质因子组成
	}

}

int main()
{
	__int64 i;
	__int64 ans;
	memset(P,0,sizeof(A));
	for(i=4;i<MAXN;i++)
	{
		P[i]=i*(i-1)*(i-2)*(i-3)/24;
	}
	while(scanf("%d",&N)!=EOF)
	{
		memset(B,0,sizeof(A));

		for(i=0;i<N;i++)
		{
			scanf("%d",&num);
			dfs();
		}
		ans=0;
		for(i=2;i<MAXN;i++)
			if(B[i])//容斥原理,奇相加。偶相减
			{
				if(A[i]%2)
					ans+=P[B[i]];
				else
					ans-=P[B[i]];
			}
		ans=P[N]-ans;
        printf("%I64d\n",ans);

	}
	return 0;
}
时间: 2024-10-11 07:25:31

组合数学部分知识点的相关文章

知识点整理--组合数学

定义 组合:C(n,m)表示从n个元素中,取任意的m个元素的方案数. 定义式:    递推式:C(n,m)=C(n-1,m-1)+C(n-1,m) 排列:A(n,m)表示从n个元素中,取任意的m个元素并排列好的方案数 常用公式 1. C(n,m)=C(n,n-m) 2. ∑C(n,i)=2^n 证明:从n个元素中任意取i个(0<=i<=n)的所有不同方案. 首先,∑C(n,i)表示从n个元素中任意取0个的所有不同取法+从n个元素中任意取1个的所有不同取法+从n个元素中任意取2个的所有不同取法+

【知识点】组合数学C,A(P)的板子

话不多说上板子 typedef long long ll; const int inf=0x3f3f3f; const int maxn=1e9+1; const int mod=1e9+7; ll a[];//数组大小注意,也要与下面初始化一致 ll Pow(ll a,ll b){ a%=mod; ll ans = 1; while(b) { if(b&1) ans = (ans*a)%mod; a = (a*a)%mod; b/=2; } return ans%mod; } ll Quk(l

ACM知识点分类

ACM知识点分类  (红:完全没听说过 黄:听说过 绿:接触过做过题 蓝:很熟悉刷过专题 紫:见一道秒一道) 第一类:基础算法 (1)     基础算法:枚举,贪心,递归,分治,递推,构造,模拟 (2)     动态规划:背包问题,树形dp,状态压缩dp,单调性优化,插头dp (3)     搜索:dfs,bfs,记忆化搜索,优化与剪枝,双广,A*,IDA*,跳舞链 第二类:数据结构 (1)     简单数据结构:链表,栈和队列,串,树和二叉树,图,排序与检索 (2)     树形结构:线段树,

ACM知识点清单

本文直接来源http://blog.csdn.net/xuanandting/article/details/52160859,如有侵权,请联系删除. 训练过ACM等程序设计竞赛的人在算法上有较大的优势,这就说明当你编程能力提高之后,主要时间是花在思考算法上,不是花在写程序与debug上. 下面给个计划你练练: 第一阶段:练经典常用算法,下面的每个算法给我打上十到二十遍,同时自己精简代码,因为太常用,所以要练到写时不用想,10-15分钟内打完,甚至关掉显示器都可以把程序打出来. 1.最短路(Fl

算法学习知识点

 ACMer必备知识(这么多呀,慢慢学了-- 图论 路径问题 0/1边权最短路径 BFS 非负边权最短路径(Dijkstra)   (可以用 Dijkstra解决问题的特征) 负边权最短路径   Bellman-Ford Bellman-Ford的 Yen-氏优化 差分约束系统 Floyd 广义路径问题   传递闭包 极小极大距离 /极大极小距离 Euler Path / Tour 圈套圈算法 混合图的 EulerPath / Tour  Hamilton Path / Tour 特殊图的

【置顶】ACM知识点分类

ACM知识点分类  (红:完全没听说过 黄:听说过 绿:接触过做过题 蓝:很熟悉刷过专题 紫:见一道秒一道) 第一类:基础算法 (1)     基础算法:枚举,贪心,递归,分治,递推,构造,模拟 (2)     动态规划:背包问题,树形dp,状态压缩dp,单调性优化,插头dp (3)     搜索:dfs,bfs,记忆化搜索,优化与剪枝,双广,A*,IDA*,跳舞链 第二类:数据结构 (1)     简单数据结构:链表,栈和队列,串,树和二叉树,图,排序与检索 (2)     树形结构:线段树,

【组合数学入门+例题】

前言 组合数学是数论的一部分,应该算是入门,但是卡常的组合数题目真的是毒瘤 简介 (摘自知乎) 组合数学(Combinatorics)是纯数学的一个分支,主要研究离散.有限或可数的数学结构. 除了纯数学,组合数学在应用数学.理论物理.计算机科学等分支也有着很多应用.在计算机科学中,组合数学又被称作 "离散数学". 在美国数学会的学科分类中,组合数学下设五个子学科,分别为:计数组合.设计理论.图论.极值组合.代数组合. 基础知识点:组合数 从\(n\)个不同元素中,任取\(m(m≤n)\

H5移动端知识点总结

移动开发基本知识点 一. 使用rem作为单位html { font-size: 100px; }@media(min-width: 320px) { html { font-size: 100px; } }@media(min-width: 360px) { html { font-size: 112.5px; } }@media(min-width: 400px) { html { font-size: 125px; } }@media(min-width: 640px) { html { f

Spring知识点回顾(01)

Spring知识点回顾(01) 一.依赖注入 1.声明Bean的注解 @Component @Service @Repository @Controller 2.注入Bean的注解 @Autowired @Inject @Resource 二.加载Bean 1.xml方式 - applicationcontext.xml : Beans, Bean, Component-Scan 2.注解方式 - @Configuration,@ComponentScan,@Bean 用@Configurati