题目的思路还是很简单的,找出这些组合数中最大的公约数;

其中C(n,k)=n ! /k!/(n-k)!

所以枚举每个素因数,用(n!)的减去(k!)和(n-k)!的就行了...

最后取每组的最小值

 #include <iostream>
#include <cstdio>
#include <cstring> using namespace std;
const int maxn=;
const int inf=0x3fffffff;
int prime[maxn],num;
bool isprime[maxn];
int cnt[maxn],lim;
typedef unsigned long long ll; void init()
{
for(int i=; i<maxn; i++)
if(!isprime[i])
{
prime[num++]=i;
for(int j=*i; j<maxn; j+=i)
isprime[j]=;
}
} void cal(int a,int b,int c)
{
int nn=-;
for(int i=; prime[i]<=lim; i++)
{
int t=,pre=a;
if(pre>=prime[i]) while(pre) t+=pre/prime[i],pre/=prime[i];
pre=b;
if(pre>=prime[i]) while(pre) t-=pre/prime[i],pre/=prime[i];
pre=c;
if(pre>=prime[i]) while(pre) t-=pre/prime[i],pre/=prime[i];
if(cnt[i]==-||cnt[i]>t) cnt[i]=t;
if(cnt[i]) nn=prime[i];
}
lim=nn;
}
ll pow1(ll a,int n)
{
ll ret=;
for(; n; n>>=,a=a*a)
if(n&) ret*=a;
return ret;
}
int main()
{
init();
int n,a[],b[];
while(scanf("%d",&n)==)
{
lim=inf;
for(int i=; i<n; i++)
{
scanf("%d %d",&a[i],&b[i]);
lim=min(lim,a[i]);
}
memset(cnt,-,sizeof(cnt));
for(int i=; i<n; i++)
cal(a[i],b[i],a[i]-b[i]);
ll ans=;
for(int i=; prime[i]<=lim; i++)
if(cnt[i]>) ans*=pow1(prime[i],cnt[i]);
printf("%I64u\n",ans);
}
return ;
}

FZU 1753的更多相关文章

  1. fzu 1753 Another Easy Problem

    本题题意为求 t (t<150) 个 c (n,m)  (1<=m<=n<=100000)的最大公因子: 本题的难点为优化.主要有两个优化重点.一是每次对单个素因子进行处理,优 ...

  2. fzu 1753 质因数的应用

    Another Easy Problem Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64 ...

  3. CSU训练分类

    √√第一部分 基础算法(#10023 除外) 第 1 章 贪心算法 √√#10000 「一本通 1.1 例 1」活动安排 √√#10001 「一本通 1.1 例 2」种树 √√#10002 「一本通 ...

  4. SqlDateTime overflow. Must be between 1/1/1753 12:00:00 AM and 12/31/9999 11:59:59 PM.

    相信很多人进行数据存储时,会遇上如标题的异常错误. 其实也不算上一个错误. 当你的程序中有宣告一个字段的数据类型为DateTime时,但你又没有赋值给它,就进行存储时,它就会得到这样一个结果. 看看下 ...

  5. POJ 1753. Flip Game 枚举or爆搜+位压缩,或者高斯消元法

    Flip Game Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 37427   Accepted: 16288 Descr ...

  6. FZU 2137 奇异字符串 后缀树组+RMQ

    题目连接:http://acm.fzu.edu.cn/problem.php?pid=2137 题解: 枚举x位置,向左右延伸计算答案 如何计算答案:对字符串建立SA,那么对于想双延伸的长度L,假如有 ...

  7. FZU 1914 单调队列

    题目链接:http://acm.fzu.edu.cn/problem.php?pid=1914 题意: 给出一个数列,如果它的前i(1<=i<=n)项和都是正的,那么这个数列是正的,问这个 ...

  8. ACM: FZU 2105 Digits Count - 位运算的线段树【黑科技福利】

     FZU 2105  Digits Count Time Limit:10000MS     Memory Limit:262144KB     64bit IO Format:%I64d & ...

  9. [ACM训练] 算法初级 之 基本算法 之 枚举(POJ 1753+2965)

    先列出题目: 1.POJ 1753 POJ 1753  Flip Game:http://poj.org/problem?id=1753 Sample Input bwwb bbwb bwwb bww ...

随机推荐

  1. c++匿名类—指针

    1 摘自网上 2代码实例 #include <iostream> #include <list> #include <iterator> #include < ...

  2. PowerDesigner使用详解

    PowerDesign高级应用编写相关的VBS脚本在PowerDesign里自定义一些命令与操作等,具体的可以参考C:\Program Files\Sybase\PowerDesigner 9\VB ...

  3. Java ==,equals() 和hashCode

    Kruger上课讲到==和equals()方法是不同的,经过查询将具体内容整理一下,在查询过程中发现hashCode()方法与equlas()联系紧密,故一起研究. 比较浅显,以后如果理解更多随时更新 ...

  4. redis resque消息队列

    Resque 目前正在学习使用resque .resque-scheduler来发布异步任务和定时任务,为了方便以后查阅,所以记录一下. resque和resque-scheduler其优点在于功能比 ...

  5. js中的"=="与"==="的区别

    "==": 1,如果两表达式的类型不同,则试图将它们转换为字符串.数字或 Boolean 量. 2,NaN 与包括其本身在内的任何值都不相等. 3,负零等于正零. 4,null 与 ...

  6. Scala应用函数

    我们使用“_” 来代替单个的参数,实际上你也可以使用“_”来代替整个参数列表,比如说,你可以使用 print _ 来代替 println (_). someNumbers.foreach(printl ...

  7. job还是job

    declare jobno binary_integer;rm_days number;rm_hour number;  --传入的hourmy_hour number;    --取出当前时间的ho ...

  8. iOS开发——基于corelocation位置定位——工具类

    (代码工具类已写好,空闲时间整理成文档,待更新……)

  9. iOS 添加占位符

    添加占位符: 首先占位符的大小要比textView 的大小要小一些 1.添加一个取消键盘的通知 2.添加一个代理事件 1. // removeKeyBoard 添加通知收回键盘 [[NSNotific ...

  10. nginx图片服务器配置

    worker_processes ; #error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/erro ...