hdu4135Co prime(容斥原理)

2022-05-16 16:41:03 字數 758 閱讀 3592

交了十幾次,。最後發現理解錯題意了,區間包含右端點,一直按不包含做的。。

求出n的質因數 根據容斥原理解出區間數能被質因數整除的 再減掉

view code

1 #include 2 #include3 #include4 #include5

using

namespace

std;

6#define ll __int64

7ll sum1,sum2,a,b,n;

8int g,x[1001];9

void dfs(int i,ll y,int

num)

1019

else

2024

for(j = i+1 ; j <= g ; j++)

25 dfs(j,y,num+1

);26}27

intmain()

2849}50

if(n!=1)51

55for(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}

61return0;

62 }

hdu4135 co prime 容斥原理

題意 給定a b c,求a到b區間內與c互質的數。思路 求a到b之間的與c互素的數,等價於求1到b之間與c互素的數減去1到a之間與c互素的數。求 中與 互質的數的個數都是用尤拉函式,但如果 比較大或者是求 中與 互質的數的個數等等問題,要想時間效率高的話還是先對n分解質因數然後用容斥原理,這裡可以用...

hdu 4135 Co prime 容斥原理

題目 大意 求區間 a,b 內與n互質的數的個數。分析 單純來逐個判斷互質統計結果肯定會超時,那麼可以對n素因子分解,以素因子的個數作為迴圈的上界 第二層迴圈 第一層是列舉素因子,運用容斥原理來統計不互質的個數,最後再用總數減去不互質的個數就是互質的個數。容斥原理也就是提供了這樣間接求解的思想 先不...

hdu4135Co prime 容斥原理

題意 給定a b c,求a到b區間內與c互質的數。分析 我們可以先轉化下 用 1,b 區間與n互質的數的個數減去 1,a 1 區間與n互質的數的個數,那麼現在就轉化成求 1,m 區間於n 互質的數的個數,如果要求的是 1,n 區間與n互質的數的個數的話,我們直接求出n的尤拉函式值即可,可是這裡是行不...