首页 > 其他分享 >OI数学入门

OI数学入门

时间:2023-07-15 16:15:14浏览次数:32  
标签:const 入门 OI int 组合 个数 数学 return gaojing

模运算

//加法 
x=(a+b)%p;
x=(0ll+a+b+c)%p;
x=((a+b)%p+c)%p;
//减法 
x=((a-b)%p+p)%p;
//乘法 
x=1ll*a*b%p;
x=1ll*a*b%p*c%p;

高精度:
正数的高精度读入,输出,储存,和 \(+,-,\times\) 运算。
代码:

#include<bits/stdc++.h>
using namespace std;
const int MAXN=1e5+10;
struct gaojing{
	int n;//n 代表这个数的位数
	int a[MAXN];//a[i] 代表这个数的第 i 位是多少
	//个位在 a[1]
	char s[MAXN];//读入的
	gaojing(){
		n=1;
		memset(a,0,sizeof(a));
	}
	void read(){
		cin>>s+1;
		n=strlen(s+1);
		for(int i=1,j=n;i<=n;i++,j--)
			a[i]=s[j]-'0'; 
	}
	void print(){
		for(int i=n;i>=1;i--)
			cout<<a[i];
	}
};
gaojing operator+(const gaojing &a,const gaojing &b){
	gaojing c;
	c.n=max(a.n,b.n);	
	for(int i=1;i<=c.n;i++){
		c.a[i]+=a.a[i]+b.a[i];
		c.a[i+1]+=c.a[i]/10;
		c.a[i]=c.a[i]%10;
	}	
	if(c.a[c.n+1])c.n++;
	return c;
}
gaojing operator-(const gaojing &a,const gaojing &b){
	gaojing c;
	c.n=max(a.n,b.n);
	for(int i=1;i<=c.n;i++){
		c.a[i]+=a.a[i]-b.a[i];		
		if(c.a[i]<0){
			c.a[i]+=10;
			c.a[i+1]--;
		}
	}	
	while(c.n>1&&!c.a[c.n])
		c.n--;
	return c;
}
gaojing operator*(const gaojing &a,const gaojing &b){
	gaojing c;
	c.n=a.n+b.n;
	for(int i=1;i<=a.n;i++)
		for(int j=1;j<=b.n;j++)
			c.a[i+j-1]+=a.a[i]*b.a[j];
	for(int i=1;i<=c.n;i++){
		c.a[i+1]+=c.a[i]/10;
		c.a[i]=c.a[i]%10;
	}
	while(c.n>1&&!c.a[c.n])
		c.n--;
	return c;
}
signed main(){
	gaojing a,b,c;
	a.read();
	b.read();
	c=a+b;
	c.print();
	putchar('\n');
	c=a*b;
	c.print();
	putchar('\n');
	c=a-b;
	c.print();
	return 0;
}

素数:
定义:除了自己和他本身没有其他因数的数。


组合数:
加法原理:不能同时选
乘法原理:可以同时选

排列:顺序不同,方案不同
一个排列数,表示为 \(P^n_m\)
如 \(P^3_2 = 6\)
所有方案:
\(1\) \(2\)
\(1\) \(3\)
\(2\) \(1\)
\(2\) \(3\)
\(3\) \(1\)
\(3\) \(2\)
求排列数公式
\(P^n_m = n(n-1)(n-2)...(n-m+1) = \frac {n!}{(n-m!)}\)

组合:数相同,顺序不同,方案相同

组合数表示为:\(C^n_m\) (在 \(n\) 个数中选 \(m\) 个数)
求组合数公式:\(C^n_m = \frac {n!}{m!(n-m)!}\)

组合数的性质:$C^n_m = C^{(n-1)}_{(m-1)} + C^{n-1}_m $

\(C^n_n = 1\)

\(C^n_0 = 1\)
\(n\) 个数中选 \(n\) 个数或 \(0\) 个数,只有一种选法。

杨辉三角:
第 \(n+1\) 行的第i个数等于第 \(n\) 行的第 \(i-1\) 个数和第 \(i\) 个数之和,这也是组合数的性质之一。即 \(C_{n+1}^i = C_n^i + C_n^{i-1}\)。

从 \(n\) 个数中选奇数个数和偶数个数的方案数相等

证明见 排列DP 中的例题:求逆序对。

用递推求组合数Code:

#include<bits/stdc++.h>
using namespace std;
int C[1005][1005];
//C(i,j) 0<=i<=n,0<=j<=i 要求这个范围的组合数
signed main(){
	int n,m;
	scanf("%d%d",&n,&m);
	for(int i=0;i<=n;i++){
		C[i][0]=C[i][i]=1;
		for(int j=1;j<i;j++)
			C[i][j]=C[i-1][j-1]+C[i-1][j];
	}
	cout<<C[n][m];
	return 0;
}

标签:const,入门,OI,int,组合,个数,数学,return,gaojing
From: https://www.cnblogs.com/FinderHT/p/17556270.html

相关文章

  • UVM入门进阶1、2
    UVM入门进阶1创建对象的四种方法classtransextendsuvm_object...endclassclasstopextendsuvm_test//uvm_test继承于uvm_component...endclassclassobject_createextendstop;transt1,t2,t3,t4;`uvm_component_utils(object_create)func......
  • ON1 NoNoise AI 2023 - mac图片降噪软件
    ON1NoNoiseAI2023是一款专为Mac设计的先进降噪软件,旨在帮助摄影师高效处理照片中的噪点问题。它利用先进的AI技术,能够准确地识别和分析照片中的噪声,并以非常精细的方式去除噪点,提供清晰、细腻的图像结果。→→↓↓载ON1NoNoiseAI2023mac版 下面是ON1NoNoiseAI......
  • 【转】Docker入门笔记04:三大核心概念
    原文:https://zhuanlan.zhihu.com/p/312142777Docker的三大核心概念镜像Image容器Container仓库RepositoryDocker大部分的操作都围绕它的三大核心概念一、Docker镜像Docker镜像类似于虚拟机镜像,可以将它理解为一个只读的用于创建容器的模板。例如,一个镜像可以包含一个基......
  • 洛谷 P4931 [MtOI2018] 情侣?给我烧了!(加强版)
    洛谷传送门设\(f_i\)为\(i\)对情侣完全错位的方案数,那么答案为:\[\binom{n}{k}\frac{n!}{(n-k)!}2^kf_{n-k}\]分别代表选择\(k\)对情侣,选择它们的位置,情侣可以换位。\(f_i\)有递推公式:\[f_i=4i(i-1)(f_{i-1}+2(i-1)f_{i-2})\]考虑选出两个人,另外......
  • 【转】Docker入门笔记01:Docker容器技术的发展历程
    原文:https://zhuanlan.zhihu.com/p/304623118最近因为工作需要,要学习一些基本的Docker知识,所以整理了一些docker的入门知识,感兴趣的小白可以看看,一起学习进步。要学习一个新的东西,我的习惯一般是先了解它是什么,它是怎么来的,发展历史是怎样的,用来解决什么问题,有什么优缺点。所以......
  • 【转】Docker入门笔记02:docker的版本,你真的搞清楚了吗
    原文:https://zhuanlan.zhihu.com/p/305572519刚开始学docker的时候,被docker.io、docker-io、docker-engine、docker-ce、docker-ee这些名词搞晕了,那么到底应该安装哪个呢?docker之所以有这么多名称,是由它的发展历史决定的。为什么会有docker.io、docker-io这种命名方式在Dock......
  • 「数学」付账问题
    本题蓝桥OJ第174题的题解(蓝桥OJ上的相同题解也是我发的)题面题目描述几个人一起出去吃饭是常有的事。但在结帐的时候,常常会出现一些争执。现在有n个人出去吃饭,他们总共消费了S元。其中第i个人带了\(a_i\)元。幸运的是,所有人带的钱的总数是足够付账的,但现在问题来了:每个人......
  • [NOI2018] 屠龙勇士
    题意求解下列同余方程组,\[\begin{cases}b_1x\equiva_1\pmod{m_1}\\b_2x\equiva_2\pmod{m_2}\\\dots\\b_nx\equiva_n\pmod{m_n}\\\end{cases}\]其中,\(n\leqslant10^5,m_i\leqslant10^8,lcm(m_i)\leqslant10^{12},a_i\leqslant......
  • SAP ABAP 函数 TR_REQUEST_CHOICE
    TR_REQUEST_CHOICE是SAPABAP中的一个函数模块,它用于在系统中处理传输请求。传输请求是SAP系统中的一个重要概念,它用于管理和控制系统中对象的传输。这些对象可以是程序、表、视图等。TR_REQUEST_CHOICE函数模块提供了一种界面,允许用户在系统中选择一个传输请求。它有一个......
  • How to ak 【LGR-145-Div.4】洛谷入门赛 #14?
    A数字判断#include<bits/stdc++.h>#include<ext/pb_ds/assoc_container.hpp>#include<ext/pb_ds/tree_policy.hpp>#include<ext/pb_ds/hash_policy.hpp>#definereregister#definelll__int128#definegcgetchar#defineptputchar#definei......