2017 6 4 入門組 NO 4 猜數

2021-08-02 04:26:21 字數 1506 閱讀 8882

這題就是求乙個區間[l..r],那開始將l=-10000 r=10000

每次輸入一次判斷,如果為」n」,那麼就將符號反轉,如 >→<= = >=→< <=→>

那麼符號處理好後,

①如果為」>」或」>=」,那麼如果當x大於l且小於或等於r,則l=x

如果當x大於r,則輸出」impossible」

②如果為」

如果當x小於l,則輸出」impossible」

(tips:每當列舉」>」或」

有此公式,媽媽再也不用擔心我不能ac了

**如下:

var s:string;

l,r,n,i:longint;

procedure

doit;

var l2,l1,fw:longint;

fh,s1:string;

begin

l2:=pos(' ',s); fh:=copy(s,1,l2-1); s[l2]:=',';

l1:=pos(' ',s);

s1:=copy(s,l2+1,l1-l2-1);

val(s1,fw);

s[l1]:=',';

if s[l1+1]='n'

then

if fh='>'

then fh:='<='

else

if fh='

then fh:='>='

else

if fh='>='

then fh:='

else

if fh='<='

then fh:='>';

if (fh='>')or(fh='>=') then

begin

if fh='>'

then fw:=fw+1;

if (fw>l)and(fw<=r) then l:=fw

else

if fw>r then

begin writeln('impossible'); close(input); close(output); halt; end;

end;

if (fh='

begin

if fh='

then fw:=fw-1;

if (fwand(fw>=l) then r:=fw

else

if (fwthen

begin writeln('impossible'); close(input); close(output); halt; end;

end;

end;

begin

readln(n);

l:=-10000; r:=10000;

for i:=1

to n do

begin

readln(s);

doit;

end;

writeln(l);

end.

2017 6 4 入門組 NO 6 樹

80 做不出100 先來個80分水法 首先將x,y之間有邊的記錄兩個,存在a陣列裡,乙個是x,y,另乙個是y,x 然後將這個a陣列排序,將a i,1 按公升序排序。then 就可以求出每乙個點與多少個點有邊,求出每乙個點的 子點 的區間,用l和r陣列存 再用dfs求出以1作根,每乙個點的father...

2017 6 4 入門組 NO 1 k好數

方法 資料1 n 1000000,時間複雜度最大o 1000000 6 暴力足夠了,於是,便開始碼暴力 迴圈列舉i,將i轉為字串,每一位的判斷是否超過k 如果每一位都沒超過就 1 方法 動態規劃 找一找每一位於上一位的關係,可以發現。設n 236,k 5,如果最後一位的數x大於k,則上一位數,只能取...

C 程式設計入門題目 No 4

題目 輸入某年某月某日,判斷這一天是這一年的第幾天?程式分析 以3月5日為例,應該先把前兩個月的加起來,然後再加上5天即本年的第幾天,特殊情況,閏年且輸入月份大於3時需考慮多加一天。include using namespace std intmain sum sum day 再加上某天的天數 if...