數論題目整理(持續補充)

2021-10-25 15:22:31 字數 2066 閱讀 6153

題目鏈結

對於2,不止有因子2還有其他素數因子,能達到的最大數為3∗2

k3*2^k

3∗2k

(只有乘以3,k才有可能最大)

對於x>2的數,不止有因子x,能達到的最大數為2∗x

k2*x^k

2∗xk

題目要求我們求出小於n的,不能被表示成素數的整數次冪的數,的最小公倍數

由算數基本定理,lcm

=p1m

ax(a

1,b1

)p2m

ax(a

2,b2

)p3m

ax(a

3,a3

)...

.lcm=p1^p2^p3^....

lcm=p1

max(

a1,b

1)p2

max(

a2,b

2)p3

max(

a3,a

3)..

..我們只需要求出最大的冪次即可

#include

using

namespace std;

const

int n=

8e7+5;

const

int mod=

1e9+7;

typedef

long

long ll;

int primes[n]

,cnt;

bool st[n]

;void

get_primes

(int n)

for(

int j=

0;primes[j]

<=n/i;j++)}

}int

main()

ll res=1;

get_primes

(n);

//先篩出8e7+5以內的素數

for(i=

1;primes[i]

<=n/

2;i++

) ll tmp2=1;

while

(tmp2*

2<=n/

3) tmp2*=2

;//看看3*2最高能到最少次冪

res=res*tmp2%mod;

cout<}

題目鏈結

題眼是k注意特判n<=5的情況,n=5,k=2,n=4,k=2都是不存在解的

#include

using

namespace std;

intmain()

if(ki-=2

;for

(int j=i+

1;j<=n;j++

)for

(int j=

1;j<=i;j+=2

)}else

for(

int j=

2;j<=

6;j+=2

) cout<<

3<<

" "<<

1<<

" ";

for(

int j=

5;j<=n;j+=2

)}}

#include

#include

using

namespace std;

typedef

long

long ll;

const

int n=

1e4+5;

const

int mod=

1e9+7;

int x[n]

,p[n]

;int

main()

cnt=

min(s*p[j]

,cnt);}

for(

int k=

1;k<=cnt;k++)}

printf

("%d\n"

,res)

;}

數論題目小記

題目描述 求n到n m內的素數個數 解題報告 數論題目有時複雜度看著很大,實際上並沒有那麼大 詳見 include define ll long long using namespace std const int n 1e6 3 ll n,m,pr n tot,s n bool vis n int...

一道數論題目

有100盞燈,編號1 100,初始時都是亮著燈。有一百個小孩,編號1 100。每盞燈對應乙個開關,按下時燈亮,再按則燈滅。讓這一百個小孩依次按開關,每個小孩只能按其編號倍數的開關。比如1號小孩可以按所有開關,2號小孩只能按編號為偶數的開關,以此類推。請問所有的小孩都按過開關以後 注意 每個小孩都必須...

博弈論題目整理

hdu 1079 暴力pn打錶能過或不太好找的規律 打表比較麻煩 hdu 1525 分析規律 暴力pn打表無法獲得直觀規律,pn打表提交炸時空 hdu 1564 超簡單的規律 無法pn 超水 hdu 1846 巴什模板 超水 hdu 1847 pn找規律 也可直接打表提交 水 hdu 2516 斐波...