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
  • 相关阅读:
    Light OJ 1030
    Light OJ 1027
    [转]Learn SQLite in 1 hour
    基于 Arduino 的 RFID 识别实验
    RFID 知识的学习
    Arduino UNO R3
    浪潮之巅(第2版)- 读书笔记
    [转]周易入门三十五问答
    Nginx代码风格图示
    封神演义
  • 原文地址:https://www.cnblogs.com/forgot93/p/3450404.html
Copyright © 2011-2022 走看看