1. 程式人生 > >2017.8.8測試 題一 分數拆分

2017.8.8測試 題一 分數拆分

題解:慢慢列舉滿足即可。因為x≥y,所以y≤2*k,且y≥k,所以迴圈範圍就是k+1 to 2*k。不過直接用1/i和1/k,會出問題(計算機中沒分數),所以就變成k/i*k和i/i*k。再者,1/x=1/k-1/y。所以1/x=i/i*k - k/i*k=i-k/i*k ,所以只要i-k/i*k滿足i*k mod (i-k)=0就能簡化為1/x

var
 k,x,y,i,ans:longint;
begin
 readln(k);
 for i:=k+1 to 2*k do
  begin
   x:=i-k;
   y:=k*i;
   if y mod x=0 then inc(ans);
  end;
 writeln(ans);
end.