這是一道簽到題!
建議做題之前仔細閱讀資料範圍!
我們定義乙個函式:qiandao(x)為小於等於x的數中與x不互質的數的個數。
這題作為簽到題,給出l和r,要求求
。輸入格式:
一行兩個整數,l、r。
輸出格式:
一行乙個整數表示答案。
輸入樣例#1:
233 2333輸出樣例#1:
1056499輸入樣例#2:
2333333333 2333666666輸出樣例#2:
153096296對於30%的資料,
。對於60%的資料,
。對於100%的資料,
,。qiandao(x)=x-phi(x),轉化為求尤拉函式,而x只可能有乙個大於n^0.5的素因子,所以只要求到n^0.5的素數就行了。還是批量處理尤拉函式的值,否則tle啊。
1program
rrr(input,output);
2const
3 cs=666623333;4
var5 a:array[0..1000010]of
boolean;
6 f,c:array[0..1000010]of
int64;
7i,j,n:longint;
8l,r,k,ans:int64;
9begin
10 assign(input,'
r.in
');assign(output,'
r.out
');reset(input);rewrite(output);
11readln(l,r);
12 n:=trunc(sqrt(r));
13fillchar(a,sizeof(a),true);
14 k:=l;while k<=r do
begin f[k-l]:=k;c[k-l]:=k;inc(k); end;15
for i:=2
to n do
16if a[i] then
17begin
18 k:=l div i*i;if kthen k:=k+i;
19while k<=r do
20begin
21 f[k-l]:=f[k-l] div i*(i-1
);22
while c[k-l] mod i=0
do c[k-l]:=c[k-l] div
i;23 k:=k+i;
24end
;25 j:=i<<1;while j<=n do
begin a[j]:=false;j:=j+i; end;26
end;
27 k:=l;while k<=r do
begin
if c[k-l]>1
then f[k-l]:=f[k-l] div c[k-l]*(c[k-l]-1);inc(k); end
;28 ans:=0
;29 k:=l;while k<=r do
begin ans:=(ans+k-f[k-l]) mod cs;inc(k); end;30
write(ans);
31close(input);close(output);
32end.
洛谷 P3601 簽到題
題目描述 我們定義乙個函式 qiandao x 為小於等於x的數中與x不互質的數的個數。這題作為簽到題,給出l和r,要求求 i lrqi anda o i mo d666623333 sum r qiandao i mod 666623333 i lr qian dao i mo d666 6233...
洛谷P3601 簽到題
我們定義乙個函式 qiandao x 為小於等於x的數中與x不互質的數的個數。這題作為簽到題,給出l和r,要求求 sum r qiandao i mod 666623333 先線性篩出 1 sim 10 6 的質數,然後計算他們對 l sim r 的數的貢獻即可。注意噹噹 l sim r 的數最後可...
尤拉函式 簽到題
luogu p3601 簽到題 題中我們定義乙個函式 qia ndao x qiandao x qianda o x 為小於等於x的數中與x xx不互質的數的個數讓我們很自然地想到尤拉函式。那就在這裡先介紹一下這個神奇的函式。數論基礎 尤拉函式 學習完之後我們勾回頭來看這道題,題中的 qia nda...