POJ-2773 2分夹逼+DFS解容斥..

原创 2012年03月21日 14:19:36

      有了DFS解容斥问题的思路..这题不难想...若一个数x与所给的m互质..则说明x与h的GCD==1...将m因式分解,对于一个确定的上限...可以通过DFS对这些质因数解容斥求出当前上限下有多少个与m不互质的数...从而又能得到当前上限下有多少个与m互质的数...

      想到了这一步..就不难想到2的思路了...通过2分夹逼找到所需的数...并且数据范围m<=100000..在这个范围内因式分解..最多也不会超过6个质因数.{2,3,5,7,11,13}已经超过100000..显然时间上是绝对能秒杀的...

 

Program:

#include<iostream>
#include<string.h>
#include<stdio.h>
#define ll long long
using namespace std;
ll n,m,a[25],ans,p,t,h,l,r,mid; 
void DFS(ll i,ll w,ll k)
{      
       for (;i<=n;i++)
       if (a[i])
       {
             p=a[i]*w;
             h+=k*(mid/p);
             DFS(i+1,p,-k);
       }
       return;
}
int main()
{
       ll i;
       while (cin>>m>>t)
       { 
             n=0;
             for (i=2;i<=m;i++)
             if (m%i==0)
             {
                   while (m%i==0) m/=i;
                   a[++n]=i;
                   if (m==1) break;
             } 
             r=1;
             while (1)
             {
                   mid=r;
                   h=0;
                   DFS(1,1,1);
                   if (mid-h<t) r*=2;
                     else break;
             }
             l=1;
             while (r-l>1)
             {
                   mid=(l+r)/2;
                   h=0;
                   DFS(1,1,1);
                   if (mid-h>=t) r=mid;
                     else l=mid;
             }
             cout<<r<<endl;
       }
       return 0;
}


版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

poj2773-容斥原理(dfs+二分+素数表+素因子分解)

Happy 2006 Time Limit: 3000MS   Memory Limit: 65536K Total Submissions: 8661   Acc...

poj2773(欧拉函数的应用 或者 用容斥原理+dfs+二分)

题意:给出m和k,求与m互质的第k个数 要用到的zh

找质因数..打素数表..DFS解容斥问题...

Co-prime Description Given a number N, you are asked to count the number of integers b...
  • kk303
  • kk303
  • 2012-03-21 20:44
  • 1126

POJ2773---Happy 2006(容斥+二分)

Description Two positive integers are said to be relatively prime to each other if the Great Common...

POJ 2773 Happy 2006(容斥原理)

题意:给n和k,求与n互素的第k个数。 思路:二分+容斥原理。 #include #include #include #include #include #include #inclu...

POJ 2773 Happy 2006 (公式法 or 二分容斥定理)

http://poj.org/problem?id=2773 首先看一个简单的方法: 若K 若K>phi(n),我们可以利用gcd(k'+λn,n)=gcd(k',n),将其转化为K ...

POJ 2773 Happy 2006 (容斥原理+二分)

题目:http://poj.org/problem?id=2773 和 http://acm.nyist.net/JudgeOnline/problem.php?pid=762 题意:求与n的互质的...

POJ 2773 Happy 2006 (容斥)

题目链接:http://poj.org/problem?id=2773 题        意:给你m,k;找出第k个与m互素的数时多少。 思        路:二分加容斥,二分枚举[1,2^64]...

poj 2773 Happy 2006 容斥原理+筛素数+二分

//poj 2773 //sep9 #include using namespace std; const int MAX=1000; int n,k,cnt,t; bool vis[MAX+10]...

POJ 2773 Happy 2006(容斥原理+二分)

POJ 2773 Happy 2006(容斥原理+二分)
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)