zoukankan      html  css  js  c++  java
  • 容斥定理!

    练习题目:HDU 4135;http://acm.hdu.edu.cn/showproblem.php?pid=4135

    程序: #include<iostream>

    #include<string.h>
    #include<algorithm>
    #include<vector>
    using namespace std;
    vector <int>vt;//第一次用栈!很好用
    long long n,a,b,ret;
    long long que[10000];

    void fx()
    {
       vt.clear();
       ret=n;
       for (int i=2;i*i<=n;i++)
       {
           if (ret%i==0)
           {
               vt.push_back(i);
               while (ret%i==0)
               {
                   ret/=i;
               }
           }
       }
       if (ret>1) vt.push_back(ret);
    }


    long long Ans(long long n,long long x)//核心:其实我以为要用麻烦的DFS,队列解决!而且很好弄
    {
            int  num=0;
            que[num++]=1;
            for (int i=0;i<vt.size();i++)
            {
            int ep=vt[i];
            int k=num;
            for (int j=0;j<k;j++)
            que[num++]=que[j]*ep*(-1);
        }
        long long sum=0;
        for (int i=0;i<num;i++)
        sum+=x/que[i];
        return sum;
    }

    int main()
    {
        int cas;
        cin>>cas;
        for (int i=1;i<=cas;i++)
        {
            cin>>a>>b>>n;
            cout<<"Case #"<<i<<"";
            fx();
            long long ans=Ans(n,b)-Ans(n,a-1);//输出顺序,其实是(N-ans(n,b))-(N-ANS(N,A-1))
            cout<<ans<<endl;
        }
        return 0;
    }

       2013年11月29日 

     
    随性Code
  • 相关阅读:
    博客园样式设置
    最坏情况为线性时间的选择算法
    棋盘覆盖
    矩阵乘法的Strassen算法及时间复杂度
    大整数乘法及算法时间复杂度
    全排列问题的递归算法(Perm)
    python的lambda
    python的zip函数
    python操作队列
    mysql基础命令
  • 原文地址:https://www.cnblogs.com/forgot93/p/3450404.html
Copyright © 2011-2022 走看看