題目描述
guyu guo和tube lu正在玩乙個遊戲:lu默想乙個1和n 之間的數x,然後guo嘗試猜出這個數。
guo能提出m個這樣的問題: 「未知數是否能被yi整除?」
遊戲按照如下流程進行:guo先給出他想問的全部m個問題,然後lu對所有問題依次以「是」或「否」作答。得到m個問題的答案之後,guo就要給出他
的猜測。
guo寫了乙個程式幫他以最優的方式提出這m個問題,現在他想知道在保證得到乙個確定的答案下,最少可以問多少個問題,即m的最小值。
但是guo正忙於吃漂亮學姐送他的糖果而無暇改**(送糖果的學姐十分多,以至於有許多糖果快要過期了),所以他找到了你,希望你來幫他
解決這個問題。
輸入一行,乙個整數n
輸出 一行,乙個整數m
樣例輸入
【樣例輸入1】4【樣例輸入2】
8
樣例輸出
【樣例輸出1】3【樣例輸出2】
6樣例1解釋:
guo依次提問能否被2,3,4整除,就可以得到確定答案。
比如lu回答能被2,4整除,不能被3整除,則確定答案為4
樣例2解釋:
guo依次提問能否被2,3,4,5,7,8整除,總共需要6次。
資料範圍限制
對於20%的資料:1 ≤ n ≤ 20
對於60%的資料:1 ≤ n ≤ 1000
對於100%的資料: 1 ≤ n ≤ 100000
分析這題其實就是求質數的冪次方。
程式:
var
n,ans,i,j:longint;
w:int64;
f:array[0..100000]of boolean;
begin
assign(input,'game.in');
reset(input);
assign(output,'game.out');
rewrite(output);
readln(n);
fillchar(f,sizeof(f),false);
f[1]:=true;
ans:=0;
for i:=2
to n do
if f[i]=false then
for j:=2
to n div i do
f[i*j]:=true;
for i:=2
to n do
if f[i]=false then
begin
w:=i;
while w<=n do
begin
inc(ans);
w:=w*i;
end;
end;
write(ans);
close(input);
close(output);
end.
JZOJ Day 2 普及模擬 串
題目描述 給定乙個0 1串,請找到乙個盡可能長的子串,其中包含的0與1的個數相等。輸入乙個字串,只包含01,長度不超過1000000。輸出 一行乙個整數,最長的0與1的個數相等的子串的長度。樣例輸入 1011 樣例輸出 2 資料範圍限制 30 的資料 串的長度 20 程式 var s ansistr...
JZOJ Day 1 普及模擬 PLES
題目描述 在舞會上有n個男孩和n個女孩,每個人都量過了自己的身高。每個男孩只跟女孩跳舞,並且女孩也只跟男孩跳舞。每個人最 多只有乙個舞伴。男孩或者想和比自己高的女孩跳舞,或者想和比自己低的女孩跳舞,同樣的,女孩也是或者想和比自己高的男 孩跳舞,或者想和自己低的男孩跳舞。你能決定最多有多少對能在一起跳...
JZOJ Day 5 普及模擬 num
題目描述 kc邀請他的兩個小弟k和c玩起了數字遊戲。遊戲是k和c輪流操作進行的,k為先手。kc會先給定乙個數字q,每次操作玩家必須寫出當前數字的乙個因數來代替當前數字,但是這個因數不能是1和它本身。例如當前數字為6,那麼可以用2,3來代替,但是1和6就不行。現在規定第乙個沒有數字可以寫出的玩家為勝者...