博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
刘汝佳 例题10-3 选择与除法
阅读量:6251 次
发布时间:2019-06-22

本文共 1618 字,大约阅读时间需要 5 分钟。

1 #include
2 #include
3 #include
4 #include
5 #include
6 using namespace std; 7 8 const int maxn = 10000; 9 vector
primes;10 int e[maxn];11 12 /**13 add_factorial(int n, int d)计算(n!)^d,其思路是这样的:14 首先弄清楚add_integer(int n, int d)的作用:求n的质因子对应的指数。15 n!是连乘的关系,所以逐个求解n的质因子对应的指数,在原来求解的值上16 累加即可。e[i] += d;当d = 1,时表示n能被primes[i]整除,即primes[i]17 是n的一个质因子,就在e[i]的位置上+1。18 整个函数执行完毕就是唯一分解定理的代码化。即用代码求解了19 n! = p1^a1 * p2^a2 * p3^a3 *···*pn^an20 */21 22 // 乘以或除以n. d=0表示乘,d=-1表示除23 void add_integer(int n, int d) { ///求n的质因子对应的指数24 for(int i = 0; i < primes.size(); i++) {25 while(n % primes[i] == 0) { ///循环求对应质因子primes[i]的指数26 n /= primes[i];27 e[i] += d;28 }29 if(n == 1) break; // 提前终止循环,节约时间30 }31 }32 33 void add_factorial(int n, int d) {34 for(int i = 1; i <= n; i++)35 add_integer(i, d);36 }37 38 bool is_prime(int n) {39 int m = floor(sqrt(n) + 0.5);40 for(int a = 2; a <= m; a++)41 if(n % a == 0) return false;42 return true;43 }44 45 int main() {46 for(int i = 2; i <= 10000; i++)///求解2-10000之间的素数47 if(is_prime(i)) primes.push_back(i);48 int p, q, r, s;49 while(cin >> p >> q >> r >> s) {50 memset(e, 0, sizeof(e));51 ///C(p,q)52 add_factorial(p, 1);53 add_factorial(q, -1);54 add_factorial(p-q, -1);55 ///C(r,s)56 add_factorial(r, -1);57 add_factorial(s, 1);58 add_factorial(r-s, 1);59 double ans = 1;60 for(int i = 0; i < primes.size(); i++)61 ans *= pow(primes[i], e[i]);62 printf("%.5lf\n", ans);63 }64 return 0;65 }

 

转载于:https://www.cnblogs.com/yfs123456/p/5486059.html

你可能感兴趣的文章
【c学习-13】
查看>>
转:最全列表: 80 多个 Linux 系统管理员必备的监控工具
查看>>
给报表增加页眉
查看>>
Mysql配置参数说明
查看>>
python ----字符串基础练习题30道
查看>>
K 班1-7,alpha,beta 作业成绩汇总
查看>>
uva-10879-因数分解
查看>>
写了一个bug----使用已经被删除的内存
查看>>
清空表且自增的id重新从0开始
查看>>
[杂记]如何在LaTeX里插入高亮代码
查看>>
解决数据架构难点数据分布的六种策略
查看>>
mysql 存储过程创建
查看>>
centos7 composer安装
查看>>
「常微分方程」(阿諾爾德) Page 6 問題4 經過擴張相空間的每一點有且僅有一條積分曲線...
查看>>
同一个闭区间上有界变差函数的和与积都是有界变差函数
查看>>
java安全证书配置
查看>>
uikit学习
查看>>
使用erlang 建立一个自动化的灌溉系统(1)准备工作
查看>>
python 调用aiohttp
查看>>
LPAD、RPAD补位函数
查看>>