尤拉函式 簽到題

2021-10-18 22:42:04 字數 1597 閱讀 4547

luogu:p3601 簽到題

題中我們定義乙個函式:qia

ndao

(x

)qiandao(x)

qianda

o(x)

為小於等於x的數中與x

xx不互質的數的個數讓我們很自然地想到尤拉函式。那就在這裡先介紹一下這個神奇的函式。

數論基礎——尤拉函式

學習完之後我們勾回頭來看這道題,題中的 qia

ndao

(x

)qiandao(x)

qianda

o(x)

其實就是求

( ph

i(x)

(phi(x)

(phi(x

)表示x的尤拉函式)))∑

i=lr

(i−p

hi(i

))

\sum_^ ( i-phi(i) )

i=l∑r​

(i−p

hi(i

))我們定睛一看發現這道題的資料有點大,但兩端點之間的區間相對較小,於是考慮對區間進行處理並掃瞄統計即可。先篩出106

10^10

6中所有的質數,然後對[l,

r]

[l,r]

[l,r

]區間進行處理。

具體**見下

#include

#include

#include

#include

#include

#define rg register

#define ll long long

using

namespace std;

const

int p=

666623333

;const

int maxn=

1000001

;ll prime[maxn]

;int isprime[maxn]

;ll l,r,cnt,ans;

ll phi[maxn]

;ll n[maxn]

;void

iprime()

}}void

getphi()

} i++;}

}int

main()

getphi()

;for

(rg ll i=

0;i<=r-l;

++i)

ans=

(ans+

(i+l-phi[i]

)%p)

%p;}

printf

("%lld\n"

,ans)

;return0;

}

1.

1.1.

資料太大想辦法處理,如本題可轉化成區間長度掃瞄。

2.

2.2.

學習理解尤拉函式,要掌握一些常用的板子。

3.

3.3.

要學會對資料範圍進行分析,根據不同的資料範圍選擇不同的演算法。

洛谷P3601簽到題(尤拉函式)

這是一道簽到題!建議做題之前仔細閱讀資料範圍!我們定義乙個函式 qiandao x 為小於等於x的數中與x不互質的數的個數。這題作為簽到題,給出l和r,要求求 輸入格式 一行兩個整數,l r。輸出格式 一行乙個整數表示答案。輸入樣例 1 233 2333輸出樣例 1 1056499 輸入樣例 2 2...

尤拉函式 尤拉定理

尤拉函式 對正整數 n,尤拉函式 是小於等於 n的數中與 n互質的數的數目 此函式以其首名研究者尤拉命名 euler so totientfunction 它又稱為 euler stotient function 函式 尤拉商數等。例如 8 4,因為 1,3,5,7均和8 互質。注 n為1時尤拉函式...

尤拉函式 尤拉定理

尤拉函式 設 n 為正整數,則 1,2,n 中與 n 互素的整數的個數計作 n 叫做尤拉函式。設 p 是素數,p p 1設 p 是素數,pa pa p a 1 設 p,q 是不同的素數,n q p,n p q 即 n p 1 q 1 設 m,n 是兩個正整數,且 m,n 1,若 n m n,n m ...