题解 P2669 【金币】

· · 题解

pascal:

program jinbi;
var k,n:longint;  i,j,q:longint;         
procedure search(i:longint);
begin
j:=i;
 while j>k do dec(j);       //如果剩余天数小于j天,则递减j
 n:=n+i*j;                 //统计j天获得钱数,i表示每天给的钱币数
 q:=j;                    //过去天数
 k:=k-q;                  //减去给过的天数
 if k=0 then exit;       //钱币给完
 search(i+1);            //没给完则继续递归         
end;
begin
readln(k);
i:=1; n:=0; q:=0;       //初始化
search(i);
writeln(n);            //输出金币数
end.