题解 P4956 【[COCI2017-2018#6] Davor】

· · 题解

这道红题很符合我的水平。。。

这是一道二元一次方程!

由题意,我们可以知道一周能筹集到的钱 x+(x+k)+(x+2k)+……+(x+6k)

即 7x+21k 那么52个星期可以有:(计算ing)364x+1092k

因为满足 1≤x≤100,所以不用担心会不会爆掉。

Pascal 代码如下:

var x,n,k:longint;
begin
  readln(n);
  for x:=100 downto 1 do  //枚举x的可能,因为要求输出最大的x,所以用了downto
  begin
    k:=n-364*x; 
    if k<=0 then continue;  
    if k mod 1092=0 then  //判断在x成立的情况下k会不会成立  
    begin
      writeln(x);
      writeln(k div 1092);
      exit;  //如果成立就可以直接跳出循环,因为此时的x是最大的
    end;
  end;
end.

蒟蒻的第一篇题解,管理员大佬求过QAQ