FZU1753 Another Easy Problem【组合数】

2024-06-15 04:48

本文主要是介绍FZU1753 Another Easy Problem【组合数】,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

题目链接:

http://acm.fzu.edu.cn/problem.php?pid=1753


题目大意:

给你 T 个组合数 C(N,K),求这 T 个组合数的最大公约数。


解题思路:

将组合数用 素因子分解的形式来表示。然后求出每个素因子在公约数中最小的阶,

相乘得到答案。


AC代码:

#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cstring>
#define LL __int64
using namespace std;
const int MAXN = 100000;
const int INF = 0x3f3f3f;bool Prime[MAXN+10];
int Primer[MAXN+10];int GetPrime()
{for(int i = 2; i <= MAXN; ++i)Prime[i] = true;for(int i = 2; i <= MAXN; ++i){if(Prime[i]){for(int j = i+i; j <= MAXN; j+=i)Prime[j] = false;}}int num = 0;for(int i = 2; i <= MAXN; ++i)if(Prime[i])Primer[num++] = i;return num;
}int Fun(int n,int div)
{int sum = 0;while(n){sum += n/div;n /= div;}return sum;
}int Solve(int n,int r,int div)
{int sum = 0;sum = Fun(n,div);sum -= Fun(r,div);sum -= Fun(n-r,div);return sum;
}
int A[220],B[220],G[220];
int main()
{int num = GetPrime();int T;while(~scanf("%d",&T)){for(int i = 0; i < T; ++i)scanf("%d%d",&A[i],&B[i]);int Min = INF;for(int i = 0; i < T; ++i)Min = min(A[i],Min);LL ans = 1;for(int i = 0; Primer[i] <= Min; ++i){G[i] = INF;for(int j = 0; j < T; ++j){int temp = Solve(A[j],B[j],Primer[i]);G[i] = min(G[i],temp);}for(int j = 0; j < G[i]; ++j)ans *= (LL)Primer[i];}printf("%I64d\n",ans);}return 0;
}


这篇关于FZU1753 Another Easy Problem【组合数】的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1062468

相关文章

mysql索引四(组合索引)

单列索引,即一个索引只包含单个列,一个表可以有多个单列索引,但这不是组合索引;组合索引,即一个索引包含多个列。 因为有事,下面内容全部转自:https://www.cnblogs.com/farmer-cabbage/p/5793589.html 为了形象地对比单列索引和组合索引,为表添加多个字段:    CREATE TABLE mytable( ID INT NOT NULL, use

TextGroupView (TextView组合控件)

TextGroupView ImageView + TextView + TextView +TextView+ EditText +ImageView + ImageView 实现的组合控件 JitPack依赖 A.项目/build.grade allprojects {repositories {...maven { url 'https://jitpack.io' }}} B.

玩转Web之Json(三)-----easy ui怎么把前台显示的dataGird中的所有数据序列化为json,返回到后台并解析

最近做一个项目时,需要在dataGird中插入<input>,即文本输入框,当点击提交时,需要把文本框里填的数据返以及其他列的一些信息以json数组的格式返回到后台,虽然我实现了该功能,但一直没找到简便的方法,今天终于在一位版主的点拨下找到了非常简单的方法。   var all = $("#dg").datagrid("getData");var json =JSON.

玩转Web之easyui(三)-----easy ui dataGird 重新指定url以获取不同数据源信息

如果已经写了一个dataGird并且已经通过url绑定数据源,能不能在其他地方改变url使其从不同数据源获取信息,从而实现查询等操作?答案当然是肯定的,而且仅需要几行代码 $('#btnq').bind('click', function(){ $('#dg').datagrid({ url: '../servlet/Student_search' });//重新指定url$('#dg'

玩转Web之easyui(二)-----easy ui 异步加载生成树节点(Tree),点击树生成tab(选项卡)

关于easy ui 异步加载生成树及点击树生成选项卡,这里直接给出代码,重点部分代码中均有注释 前台: $('#tree').tree({ url: '../servlet/School_Tree?id=-1', //向后台传送id,获取根节点lines:true,onBeforeExpand:function(node,param){ $('#tree').tree('options'

玩转Web之easyui(一)-----easy ui datagird 分页

无意中发现了一个巨牛的人工智能教程,忍不住分享一下给大家。教程不仅是零基础,通俗易懂,而且非常风趣幽默,像看小说一样!觉得太牛了,所以分享给大家。点这里可以跳转到教程。   easy ui 中数据表格的分页其实是很简单的,分页是在数据表格可以正常显示数据的基础上进行的,在这里给出servlet的代码,其中selectAll()方法是从数据库中提取所有数据, 分页的一种思路是:从数据表中取出所

组合数学、圆排列、离散数学多重集合笔记

自用 如果能帮到您,那也值得高兴 知识点 离散数学经典题目 多重集合组合 补充容斥原理公式 隔板法题目 全排列题目:

194.回溯算法:组合总和||(力扣)

代码解决 class Solution {public:vector<int> res; // 当前组合的临时存储vector<vector<int>> result; // 存储所有符合条件的组合// 回溯函数void backtracing(vector<int>& candidates, int target, int flag, int index, vector<bool>&

193.回溯算法:组合总和(力扣)

代码解决 class Solution {public:vector<int> res; // 当前组合的临时存储vector<vector<int>> result; // 存储所有符合条件的组合// 回溯函数void backtrcing(vector<int>& nums, int target, int flag, int index) {// 如果当前组合的和超过了目标值,则返

约瑟夫问题(Josephus Problem)4:第k个出列的人是谁

版权所有。所有权利保留。 欢迎转载,转载时请注明出处: http://blog.csdn.net/xiaofei_it/article/details/16813419 本文是论述约瑟夫问题的第四部分,约瑟夫问题的描述在第一部分,本文用到了第三部分的算法。请先阅读第一部分和第三部分。 现在要求输出第k个出列的人的编号。 由第三部分的算法分析可知,规模为i-1的队列的任意一人的编号为p,规