#17390: 求救 c++


d10730416@gapps.fg.tp.edu.tw (Wendy Charng)

學校 : 臺北市立第一女子高級中學
編號 : 95072
來源 : [203.64.52.101]
最後登入時間 :
2019-05-06 12:03:11
a686. 蝸牛往上爬 | From: [220.134.112.22] | 發表日期 : 2019-04-07 11:05

#include <iostream>
using namespace std;
 
long long x, y, z, n;
 
int main() {
  while (cin >> n){
    for (int i = 0; i < n; i++){
      cin >> x >> y >> z;
      if (y >= x){
        cout << "1" << endl;
      }
      else if (z >= y){
        cout << "Poor Snail" << endl;
      }
      else cout << (x - y) / (y - z) + 1 << endl;
    }
  }
}
 
我輸入 11 4 2 這組測資時輸出是4天
正確答案是5天 請問各位大大我該怎麼修正程式?
p.s. 當 (x - y) / (y - z) 為整數時就沒有這個問題
 
/* 以下為公式推導
y + (d - 1)(y - z) >= x
(d - 1)(y - z) >= x - y
d - 1 >= (x - y) / (y - z)
d >= (x - y) / (y - z) + 1
*/
 
#18276: Re:求救 c++


rmp4joxj6 (盧邊談話)

學校 : 中原大學
編號 : 97841
來源 : [27.247.230.6]
最後登入時間 :
2020-10-20 18:00:03
a686. 蝸牛往上爬 | From: [119.77.170.142] | 發表日期 : 2019-07-02 13:23

 

if(up>=floor){           ←←←←←第一天就攻頂

   printf("1\n");      

}else if(up<=down){      ←←←←←被卡死

   printf("Poor Snail\n");

}else{

   floor-=up , day=1;            ←←←←←減掉多爬的第一天

   if(floor%(up-down)){     ←←←←←妳所說的 有餘數的狀況

      day+=floor/(up-down)+1;

   }else{

      day+=floor/(up-down);

   }

   printf("%d\n",day);

}

 
ZeroJudge Forum