fzu 1753 Another Easy Problem
本题题意为求 t (t<150) 个 c (n,m) (1<=m<=n<=100000)的最大公因子;
本题的难点为优化。主要有两个优化重点。一是每次对单个素因子进行处理,优化每次的数组清零;二是对求阶乘素因子个数的优化
ei=[N/pi^1]+ [N/pi^2]+ …… + [N/pi^n] 其中[]为取整
ei 为数 N!中pi 因子的个数;
#include <iostream>
#include <cstring>
#include <cmath> #define maxn 100010 using namespace std; int sign[maxn];
int pri[maxn];
int tot;
int e;
int n[],k[]; void getpri (){
memset (sign,,sizeof sign);
tot=;
sign[]=sign[]=;
for (int i=;i*i<maxn;i++){
if (!sign[i]){
for (int j=i*i;j<maxn;j+=i){
sign[j]=;
}
}
}
for (int i=;i<maxn;i++){
if (!sign[i]){
pri[tot++]=i;
}
}
} int main (){
long long ans;
getpri ();
int t;
while (cin>>t){
int minnn=maxn+;
for (int i=;i<t;i++){
cin>>n[i]>>k[i];
minnn=min (minnn,n[i]);
k[i]=min (k[i],n[i]-k[i]);
}
ans=;
for (int i=;i<tot&&pri[i]<minnn;i++){ //每次处理单个素因子
e=;
int temp=;
for (int j=;j<t;j++){
temp=;
int flag=n[j];
while (flag){ //求 n! 中因子 pri(i) 的个数
temp+=flag/pri[i];
flag/=pri[i];
}
flag=k[j];
while (flag){
temp-=flag/pri[i];
flag/=pri[i];
}
flag=n[j]-k[j];
while (flag){
temp-=flag/pri[i];
flag/=pri[i];
}
e=min (e,temp);
}//cout<<e<<pri[i];
while (e--){
ans*=pri[i];
}
}
cout<<ans<<endl;
}
return ;
}
fzu 1753 Another Easy Problem的更多相关文章
- UVA-11991 Easy Problem from Rujia Liu?
Problem E Easy Problem from Rujia Liu? Though Rujia Liu usually sets hard problems for contests (for ...
- An easy problem
An easy problem Time Limit:3000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Sub ...
- UVa 11991:Easy Problem from Rujia Liu?(STL练习,map+vector)
Easy Problem from Rujia Liu? Though Rujia Liu usually sets hard problems for contests (for example, ...
- POJ 2826 An Easy Problem?!
An Easy Problem?! Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 7837 Accepted: 1145 ...
- hdu 5475 An easy problem(暴力 || 线段树区间单点更新)
http://acm.hdu.edu.cn/showproblem.php?pid=5475 An easy problem Time Limit: 8000/5000 MS (Java/Others ...
- 【暑假】[实用数据结构]UVa11991 Easy Problem from Rujia Liu?
UVa11991 Easy Problem from Rujia Liu? 思路: 构造数组data,使满足data[v][k]为第k个v的下标.因为不是每一个整数都会出现因此用到map,又因为每 ...
- HDU 5475 An easy problem 线段树
An easy problem Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?pi ...
- UVA 11991 Easy Problem from Rujia Liu?(vector map)
Easy Problem from Rujia Liu? Though Rujia Liu usually sets hard problems for contests (for example, ...
- 数据结构(主席树):HDU 4729 An Easy Problem for Elfness
An Easy Problem for Elfness Time Limit: 5000/2500 MS (Java/Others) Memory Limit: 65535/65535 K (J ...
随机推荐
- SSE2 Intrinsics各函数介绍[转]
SIMD相关头文件包括: //#include <ivec.h>//MMX //#include <fvec.h>//SSE(also include ivec.h) //#i ...
- re模块
Python 的 re 模块(Regular Expression 正则表达式)提供各种正则表达式的匹配操作,和 Perl 脚本的正则表达式功能类似,使用这一内嵌于 Python 的语言工具,尽管不能 ...
- python笔记之提取网页中的超链接
python笔记之提取网页中的超链接 对于提取网页中的超链接,先把网页内容读取出来,然后用beautifulsoup来解析是比较方便的.但是我发现一个问题,如果直接提取a标签的href,就会包含jav ...
- JS扩展方法
JS扩展方法与C#的扩展方法非常相似,也是可以链式调用的,也是通过对某个类的扩展写法来实现.这个东西非常好用,如果将预先写好的方法放到一个js里面引用的话,那么后面写js将非常有趣. 下面给出一个例子 ...
- C# 引用类型与值类型在编码上的区别
一.引入类型与值类型简介 值类型:直接存放于栈中,取的时候是直接取得值.值类型继承自System.ValueType.(自定义对象) 引用类型:存在于托管堆中,取的时候是从栈取该对象的地址,然后用这个 ...
- Match类
Regex在匹配的时候,常常会返回一个Match类的对象,今天就来看看怎么玩这个对象. 一.属性 Captures 按从里到外.从左到右的顺序获取由捕获组匹配的所有捕获的集合(如果正则表达式用 Reg ...
- logstash 处理tomcat日志
[root@dr-mysql01 tomcat]# cat logstash_tomcat.conf input { file { type => "zj_api" path ...
- jQuery多版本的使用,同一文件多个版本引用
<html> <meta http-equiv="Content-Type" content="text/html; charset=utf-8&quo ...
- hdu 5631 Rikka with Graph(图)
n个点最少要n-1条边才能连通,可以删除一条边,最多删除2条边,然后枚举删除的1条边或2条边,用并查集判断是否连通,时间复杂度为O(n^3) 这边犯了个错误, for(int i=0;i<N;i ...
- JavaWeb——文件上传和下载
在Web应用系统开发中,文件上传和下载功能是非常常用的功能,今天来讲一下JavaWeb中的文件上传和下载功能的实现. 对于文件上传,浏览器在上传的过程中是将文件以流的形式提交到服务器端的,如果直接使用 ...