zoukankan      html  css  js  c++  java
  • UVa10375 选择与除法(唯一分解定理)

    原题链接:UVa10375

    解析:其中primes是前1000个素数,e数组存放每个素数对应的指数。

    代码实例:

    #include<iostream>
    #include<cstring>
    #include<cmath>
    #include<cstdio>
    using namespace std;
    int primes[1005];
    int e[1005];
    void add_integer(int n,int d){
    	for(int i = 0;i < 1000;i++)
    		if(n == 1)	break;
    		else
    		while(n%primes[i] == 0){
    			e[i] += d;
    			n /= primes[i];
    		}
    }
    void add_factorial(int n,int d){
    	for(int i = 1;i <= n;i++)
    		add_integer(i,d);
    }
    void solve(int p,int q,int r,int s){
    	memset(e,0,sizeof e);
    	add_factorial(p,1);
    	add_factorial(q,-1);
    	add_factorial(s,1);
    	add_factorial(r,-1);
    	add_factorial(r-s,1);
    	add_factorial(p-q,-1);
    	double ans = 1;
    	for(int i = 0;i < 1000;i++)	ans *= pow(primes[i],e[i]);
    	printf("%.5lf
    ",ans);
    }
    int main()
    {
    	int isPrime[10000];
    	memset(isPrime,0,sizeof isPrime);
    	for(int i = 2;i <= 100;i++)	if(!isPrime[i])
    		for(int j = i*i;j < 10000;j+=i)	
    			isPrime[j] = 1;
    	int cnt = 0;
    	for(int i = 2;cnt < 1000;i++)
    		if(!isPrime[i])	primes[cnt++] = i;
    	int p,q,r,s;
    	while(cin >> p >> q >> r >> s){
    		solve(p,q,r,s);
    	}
    	return 0;
    }
  • 相关阅读:
    Android使用Fragment来实现TabHost的功能
    selendroid之toast处理
    selendroid之inspector
    杂技
    自动化测试框架
    保险数据分析
    订单分析指标
    CRM原型
    monkey 参数
    monkey基础操作
  • 原文地址:https://www.cnblogs.com/long98/p/10352218.html
Copyright © 2011-2022 走看看