普及 模擬 開關燈泡(jzoj第三題)

2021-07-30 07:15:15 字數 1543 閱讀 9642

題目:

description

乙個房間裡有n盞燈泡,一開始都是熄著的,有1到n個時刻,每個時刻i,我們會將i的倍數的燈泡改變狀態(即原本開著的現將它熄滅,原本熄滅的現將它點亮),問最後有多少盞燈泡是亮著的。

input

乙個數n

output

m,表示最後有m盞是亮著的

sample input

sample output

data constraint

hint

範圍:40%的資料保證,n<=maxlongint

100%的資料保證,n<=10^200

作者思路:高精度平方根。我們知道,乙個n位數<=(ndiv2)(ndiv2)相乘,所以先把長度div 2,從9至0列舉,不要從0至9。

**:

var a,b,c:array[0..251] of longint;

l:longint;

procedure

init;

var i:longint;

st:string;

begin

readln(st);

l:=length(st);

for i:=1

to l do c[250-(l-i)]:=ord(st[i])-48;

end;

procedure

main;

var i,j,k,w:longint;

begin

for i:=250-l div2to

250do

for j:=9

downto0do

begin

a[i]:=j;

fillchar(b,sizeof(b),0);

for k:=150

to250

dofor w:=150

to250

do b[k+w-250]:=b[k+w-250]+a[k]*a[w];

for k:=250

downto1do

begin

b[k-1]:=b[k-1]+b[k] div

10; b[k]:=b[k] mod

10; end;

for k:=0

to250

doif b[k]<>c[k] then

break;

if b[k]<=c[k] then

break;

end;

end;

procedure

print;

var i,j:longint;

begin

for i:=0

to250

doif a[i]<>0

then

break;

for j:=i to

250do

write(a[j]);

end;

begin

init;

main;

print;

end.

JZOJ 4 8 2434 開關燈泡 高精度

description 乙個房間裡有n盞燈泡,一開始都是熄著的,有1到n個時刻,每個時刻i,我們會將i的倍數的燈泡改變狀態 即原本開著的現將它熄滅,原本熄滅的現將它點亮 問最後有多少盞燈泡是亮著的。input 乙個數n output m,表示最後有m盞是亮著的 sample input 5sampl...

2020 02 13普及C組模擬賽6(第三題)

題目描述 題目 農夫約翰最近正在將他的柵欄粉刷一下 這裡所有的柵欄都是在一條直線上的 他是這樣來粉刷的 他從位置0出發,然後執行n條指令,例如,指令可以是 10 l 表示約翰從當前的位置向左移動10個單位的距離,並且粉刷移動過程中遇到的柵欄,又或者是 15 r 表示約翰從當前的位置向右移動15個單位...

2020 02 19普及C組模擬賽8(第三題)

題目描述 自從學習了動態規劃後,famer kxp對動態規劃的熱愛便一發不可收拾,每天都想找點題做,一天,他找到了一道題,但是不會做,於是,他找到了你。題目如下 給出n個無序不重複的數,再有m個詢問,每次詢問乙個數是否在那n個數中,若在,則ans增加2 k,k為該數在原數列中的位置。由於ans過大,...