zoukankan      html  css  js  c++  java
  • hdu4135Coprime(容斥原理)

    http://acm.hdu.edu.cn/showproblem.php?pid=4135

    交了十几次,。最后发现理解错题意了,区间包含右端点,一直按不包含做的。。

    求出N的质因数 根据容斥原理解出区间数能被质因数整除的 再减掉

    View Code
     1 #include <iostream>
     2 #include<cstdio>
     3 #include<cmath>
     4 #include<cstring>
     5 using namespace std;
     6 #define LL __int64
     7 LL sum1,sum2,a,b,n;
     8 int g,x[1001];
     9 void dfs(int i,LL y,int num)
    10 {
    11     int j;
    12     if(y!=x[i])
    13     y = y*x[i];
    14     if(num%2!=0)
    15     {
    16         sum1+=(a-1)/y;
    17         sum2+=b/y;
    18     }
    19     else
    20     {
    21         sum2-=b/y;
    22         sum1-=(a-1)/y;
    23     }
    24     for(j = i+1 ; j <= g ; j++)
    25     dfs(j,y,num+1);
    26 }
    27 int main()
    28 {
    29     int t,i,j,k = 0;
    30     cin>>t;
    31     while(t--)
    32     {
    33         k++;
    34         scanf("%I64d%I64d%I64d",&a,&b,&n);
    35         sum1 = 0;
    36         sum2 = 0;
    37         g = 0;
    38         x[g] = 0;
    39         LL yy = n;
    40         for(i = 2 ; i <= sqrt(yy*1.0) ; i++)
    41         {
    42            if(n%i==0)
    43            {
    44                g++;
    45                x[g] = i;
    46                while(n%i==0)
    47                n = n/i;
    48            }
    49         }
    50         if(n!=1)
    51         {
    52             g++;
    53             x[g] =n;
    54         }
    55         for(i = 1; i <= g ; i++)
    56         dfs(i,x[i],1);
    57         printf("Case #%d: ",k);
    58         LL sum = b-sum2-(a-1-sum1);
    59         printf("%I64d\n",sum);
    60     }
    61     return 0;
    62 }
  • 相关阅读:
    win中使用curl上传文件报错
    S2-052
    S2-048
    S2-045、S2-046
    S2-033、S2-037
    S2-032
    S2-029
    day12-python之深灰魔法
    day10-11-python基础之字符串
    day09-python基础
  • 原文地址:https://www.cnblogs.com/shangyu/p/2719303.html
Copyright © 2011-2022 走看看