POJ 2773 二分+容斥定理
来源:互联网 发布:调到数据网接入设备 编辑:程序博客网 时间:2024/05/22 14:22
不愧是我们的袁神,三分钟搞定...
题意不介绍了..
/*2773 Accepted 168K 0MS C++ 1030B 2012-12-14 21:12:23*/
#include <cstdio>
// 对n进行素因子分解, fac[0]记录因子个数;
int fac[10];
void Div(int n){
int k= 0;
for(int i=2; i*i<=n; ++i){
if( n%i==0 ) fac[++k]= i;
while(n%i==0) n/= i;
}
if( n>1 ) fac[++k]= n;
fac[0]= k;
}
// 计算[1, n]内与m互质的数的个数,容斥定理模板;
int que[1<<10];
int Count(int n, int m){
int g= 0, sum= n;
que[++g]= 1;
for(int i=1; i<=fac[0]; ++i){
int t= g;
for(int j=1; j<=g; ++j){
que[++t]= que[j] * fac[i] * -1;
sum+= n/que[t];
}
g= t;
}
return sum;
}
// 二分,二分枚举一个答案mid,计算[1, mid]内有多少个数与m互质,让答案与K比较;
int Binary_search(int m, int K){
int l=1, r= 2000000000, mid;
while(l<=r){
mid= (l+r)>>1;
if( Count(mid, m) >= K ) r= mid-1; /// 二分很巧妙,当出现单元素交集时,则该元素就是所求的解了
else l= mid+1;
}
return l;
}
int main()
{
int m, K;
while(scanf("%d%d", &m, &K)!=EOF)
{
Div(m);
int ans= Binary_search(m, K);
printf("%d\n", ans);
}
}
- POJ 2773 二分+容斥定理
- POJ 2773 Happy 2006 容斥定理+二分
- POJ 2773 Happy 2006 (公式法 or 二分容斥定理)
- POJ 3904 (容斥定理)
- POJ 2773 Happy 2006 二分+容斥
- POJ 2773 Happy 2006 (二分+容斥)
- POJ 2773 容斥与二分
- POJ 2773 二分 +容斥原理
- poj 2773 容斥原理+二分
- POJ-2773 欧几里得 + 二分 + 容斥
- poj-2773(数论+容斥原理+二分)
- POJ 2773 Happy 2006 二分+容斥原理
- POJ 2773 Happy 2006 【数论,容斥原理+二分】
- poj 2773 (容斥原理 + 素数分解 + 二分)
- POJ 2773 happy2006 (素因子分解+容斥原理+二分)
- [二分+容斥原理] poj 2773 Happy 2006
- poj 2773 Happy 2006(容斥原理+二分)
- [POJ 2773]Happy 2006(容斥原理+二分查找)
- 【Android游戏开发十八】解放手指,利用传感器开发游戏!(本文讲解在SurfaceView中用重力传感器控制圆球的各方向移动)
- HDU 3835 R(N)
- JavaScript判断一组单选或复选按钮至少一个被选中
- Java打包JAR文件
- 获取较高精度的时间
- POJ 2773 二分+容斥定理
- 解密目前DEZEND工具不能够解密的zend加密php文件 如解密出现 [exception occured] 代码溢出问题
- 资料--使用java、web services进行数据库编程
- 计算机考专业课资料
- centos 6.3 安装遇到都问题
- 自己构建Ajax请求进行模拟QueryTask进行查询
- hdu1005 number sequence
- 【Android游戏开发十一】手把手让你爱上Android sdk自带“9妹”(9patch 工具),让Android游戏开发更方便!
- 命令行下走迷宫