zoukankan      html  css  js  c++  java
  • HDU 4135

    状态压缩

    其实刚开始没看懂为什么要用位运算

    后来看了别人的注释

    逐渐明白

    我也加上注释吧

     1 #include <iostream>
     2 using namespace std;
     3 
     4 long long Prime[50];//存放N的质因子
     5 
     6 
     7 long long getNonCoPrime(long long num,int m)//计算非互质数的多少
     8 {
     9     long long ans=0,flag,temp;
    10     for(long long i =1;i<(long long)(1<<m);i++)//用二进制串来表示每个质因子是否被取
    11     {
    12         temp = 1;
    13         flag = 0;
    14         for(int j = 0;j<m;j++)//判断每位是否取到
    15         {
    16             if(i&((long long)(1<<j)))//如果取了
    17             {
    18                 flag++;
    19                 temp*=Prime[j];
    20             }
    21         }
    22         if(flag&1)//容斥原理 ,奇加偶减 
    23         {
    24                 ans+=num/temp;
    25         }else{
    26             ans-=num/temp;
    27         }
    28         
    29     }
    30     return ans;
    31 }
    32 
    33 
    34 int main()
    35 {
    36     int T;
    37     cin>>T;
    38     int t =T;
    39     
    40     while(T--)
    41     {
    42         long long A,B;
    43         int N;
    44         cin>>A>>B>>N;
    45         int j =0;
    46         for(int i = 2;i*i<=N;i++)//获得质因子
    47         {
    48             if(N&&N%i==0)
    49             {
    50                 Prime[j]=i;
    51                 j++;
    52                 while(N&&N%i==0)//避免重复
    53                 {
    54                     N/=i;
    55                 }
    56             }
    57         }
    58         if(N>1)
    59             Prime[j++]=N;
    60         long long result = B-A-(getNonCoPrime(B,j) -getNonCoPrime(A-1,j))+1;
    61         cout<<"Case #"<<t-T<<": "<<result<<endl;
    62     }
    63     return 0;
    64 }
  • 相关阅读:
    自定义类似MessageBox小窗体操作
    WinForm 遍历用户控件里CheckBox
    WinForm BaseClass类常用通用方法
    分页的几种写法
    克服粗心毛病的伪代码
    C++queue的使用
    Unix网络编程学习 < 一 >
    使用log4cxx
    memset函数
    libcurl在windows下的使用
  • 原文地址:https://www.cnblogs.com/Run-dream/p/3859345.html
Copyright © 2011-2022 走看看