題目鏈結
對於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 斐波...