2026/5/21 14:19:12
网站建设
项目流程
wordpress后台登陆logo,长沙seo 优化选智投未来no1,怎么去营销自己的产品,最好的wordpress本文分享的必刷题目是从蓝桥云课、洛谷、AcWing等知名刷题平台精心挑选而来#xff0c;并结合各平台提供的算法标签和难度等级进行了系统分类。题目涵盖了从基础到进阶的多种算法和数据结构#xff0c;旨在为不同阶段的编程学习者提供一条清晰、平稳的学习提升路径。
欢迎大…本文分享的必刷题目是从蓝桥云课、洛谷、AcWing等知名刷题平台精心挑选而来并结合各平台提供的算法标签和难度等级进行了系统分类。题目涵盖了从基础到进阶的多种算法和数据结构旨在为不同阶段的编程学习者提供一条清晰、平稳的学习提升路径。欢迎大家订阅我的专栏算法题解C与Python实现附上汇总贴算法竞赛备考冲刺必刷题C | 汇总【题目来源】AcWing888. 求组合数 IV - AcWing题库【题目描述】输入a , b a,ba,b求C a b C_a^bCab的值。注意结果可能很大需要使用高精度计算。【输入】共一行包含两个整数a aa和b bb。【输出】共一行输出C a b C_a^bCab的值。【输入样例】5 3【输出样例】10【算法标签】《AcWing 888 求组合数IV》 #组合数学# #组合计数# #高精度#【代码详解】#includebits/stdc.husingnamespacestd;constintN5005;// 质数表大小intprimes[N],cnt;// primes存储质数cnt是质数个数boolst[N];// 筛法标记数组intsum[N];// 存储每个质因子的指数// 线性筛法求1~n的所有质数voidget_primes(intn){for(inti2;in;i){if(!st[i])// 如果i是质数{primes[cnt]i;// 加入质数表}// 用当前已得到的质数筛掉合数for(intj0;primes[j]n/i;j){st[primes[j]*i]true;// 标记合数if(i%primes[j]0)// 如果primes[j]是i的最小质因数{break;// 保证每个合数只被最小的质因数筛掉}}}}// 计算n!中质因子p的指数勒让德定理intget(intn,intp){intres0;// 指数结果// 勒让德公式n!中质因子p的指数 ⌊n/p⌋ ⌊n/p²⌋ ⌊n/p³⌋ ...while(n){resn/p;// 计算⌊n/p⌋n/p;// 继续计算下一项}returnres;}// 高精度乘法大整数A乘以小整数bvectorintmul(vectorintA,intb){vectorintC;// 存储结果intt0;// 进位for(inti0;iA.size()||t;i)// 遍历A的每一位或还有进位{if(iA.size())// 如果A还有位数{tA[i]*b;// 当前位乘以b加上进位}C.push_back(t%10);// 取个位t/10;// 计算进位}// 去掉前导0但保留最后一位0如果结果就是0while(C.size()1C.back()0){C.pop_back();}returnC;}intmain(){inta,b;// 输入C(a, b)cinab;// 1. 筛出1~a的所有质数get_primes(a);// 2. 计算组合数C(a,b)的质因数分解for(inti0;icnt;i){intpprimes[i];// 当前质数// 勒让德公式计算C(a,b)中质因子p的指数// C(a,b) a! / (b! * (a-b)!)// 指数 在a!中的指数 - 在b!中的指数 - 在(a-b)!中的指数sum[i]get(a,p)-get(b,p)-get(a-b,p);}// 3. 用高精度乘法计算结果vectorintres;// 存储高精度结果低位在前res.push_back(1);// 初始化为1// 遍历所有质因子for(inti0;icnt;i){intpprimes[i];// 当前质数intexpsum[i];// 质因子p的指数// 将p乘exp次for(intj0;jexp;j){resmul(res,p);}}// 4. 输出结果从高位到低位for(intires.size()-1;i0;i--){coutres[i];}coutendl;return0;}【运行结果】5 3 10