题目:数的计算 rqnoj153
题目描述
我们要求找出具有下列性质数的个数(包含输入的自然数n):
先输入一个自然数n(n<=1000),然后对此自然数按照如下方法进行处理:
1.不作任何处理;
2.在它的左边加上一个自然数,但该自然数不能超过原数的一半;
3.加上数后,继续按此规则进行处理,直到不能再加自然数为止.
样例: 输入: 6
满足条件的数为6 (此部分不必输出)
16
26
126
36
136
输出: 6
输入格式
一个自然数:n
输出格式
具有以上性质的数的个数:s
样例输入
6
样例输出
6
题目不难,也很好理解,直接深搜,每次减半继续深搜
Pascal Code
program rqnoj153;
var
n,sum:longint;
procedure init;
begin
assign(input,'rqnoj153.in');
assign(output,'rqnoj153.out');
reset(input);
rewrite(output);
end;
procedure outit;
begin
close(input);
close(output);
halt;
end;
procedure readdata;
begin
read(n);
end;
procedure work(x:longint);
var
i:longint;
begin
if x=1 then exit;
x:=x div 2;
for i:=1 to x do
begin
inc(sum);
work(i);
end;
end;
procedure main;
var
i:longint;
begin
sum:=1;
work(n);
writeln(sum);
end;
begin
init;
readdata;
main;
outit;
end.