学习内容(每日更新)
8.4-8.5
1.鸽巢定理及其推论
m只鸽子放进n个巢,至少有一个巢至少有m/n只(取上整)
2.容斥原理
奇加偶减
8.6
3.扩展欧几里德定理
如果ax+by=gcd(a,b)=d.则一定有整数解
#include<iostream>
#include<stdio.h>
#include<math.h>
using namespace std;
typedef long long ll;
int exgcd(ll a,ll b,ll &x,ll &y)
{
if(a==0)
{
x=0;y=1;
return b;
}
else
{
ll tx,ty;
ll d=exgcd(b%a,a,tx,ty);
x=ty-(b/a)*tx;
y=tx;
return d;
}
}
int main()
{
ll a=3;
ll b=8;
ll x,y;
cout<<exgcd(a,b,x,y)<<endl;
cout<<x<<" "<<y<<endl;
return 0;
}
4.欧拉函数
f(n)表示不超过n与n互质的数的个数
#include<stdio.h>
#include<iostream>
#include<stdio.h>
#include<math.h>
using namespace std;
int eular(int n)
{
int ret=1,i;
for(i=2;i*i<=n;i++)
{
if(n%i==0)
{
n/=i,ret*=i-1;
while(n%i==0)
n/=i,ret*=i;
}
}
if(n>1)
ret*=n-1;
return ret;
}
int main()
{
cout<<eular(1)<<endl;
}
若n为质数,则到从1到n与n互质的数有n-1个