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 }
  • 相关阅读:
    Windows Phone 7 利用计时器DispatcherTimer创建时钟
    杭电1163 Eddy's digital Roots
    随感1
    杭电 1194 Beat the Spread!
    杭电 1017 A Mathematical Curiosity
    杭电1202 The calculation of GPA
    关于递归的思想
    杭电1197 Specialized FourDigit Numbers
    杭电 1062 Text Reverse
    杭电1196 Lowest Bit
  • 原文地址:https://www.cnblogs.com/Run-dream/p/3859345.html
Copyright © 2011-2022 走看看