uva 10375算术基本定理(约分)

点击打开链接

uva 10375算术基本定理(约分)_第1张图片

唯一性证明

uva 10375算术基本定理(约分)_第2张图片


求C(p,q)/C(r,s)  p,q,r,s<=1e4; 
1e4!太大 因为最终ans<=1e8
所以利用算术基本定理分解成素数,记录素数的指数后消去因子 

#include 
#include 
#include 
#include 
#include 
using namespace std;
const int N=1e4+10;
int e[N];//e[i]第i个素数的指数 
int prime[N+20];
int prime_size;
void getprime()
{
	int m=sqrt(N);
	memset(prime,0,sizeof(prime));
	for(int i=2;i<=m;i++)
	{
		if(!prime[i])
		{
			for(int j=i*2;j<=N;j+=i)//一个数的倍数不是素数 
			prime[j]=1;
		}
	}
	prime_size=0;
	for(int i=2;i<=N;i++)
	{
		if(!prime[i])	
		prime[prime_size++]=i;
	}
}
void add(int n,int d)
{
	for(int i=0;i>p>>q>>r>>s)
	{
		memset(e,0,sizeof(e));
		fac(p,1);//p! 1是乘,-1是除 
		fac(q,-1);
		fac(p-q,-1);
		fac(r,-1);
		fac(r-s,1);
		fac(s,1);
		double ans=1;
		for(int i=0;i


你可能感兴趣的:(Math,紫书第10章Math专题)