トップページに戻る
次のSQLパズルへ
前のSQLパズルへ
11-8 白雪姫のリンゴ
SQLパズル
リンゴをx個抱えた白雪姫が、7人のこびとに1人ずつ順番に出会いました。
まず、1人目のこびとには、持っていたリンゴ数に1を加えた数の半分をあげました。
次に2人目のこびとには、残っていたリンゴ数に1を加えた数の半分をあげました。
3人目から、7人目まで、同じように残っていたリンゴ数に1を加えた数の半分をあげました。
そして、7人のこびとにリンゴをあげたあと、
白雪姫の手には、1つのリンゴ(毒リンゴ)しか、残っていませんでした。
xの値を求めてください。
SQL
declare
Apple number;
begin
for i in 1..1000 Loop
Apple := i;
Apple := Apple - (Apple+1)/2;
Apple := Apple - (Apple+1)/2;
Apple := Apple - (Apple+1)/2;
Apple := Apple - (Apple+1)/2;
Apple := Apple - (Apple+1)/2;
Apple := Apple - (Apple+1)/2;
Apple := Apple - (Apple+1)/2;
if Apple = 1 then
DBMS_Output.Put_Line(to_char(i) || '個');
end if;
end Loop;
end;
/
解説
for文を使って順番にチェックしてます。