python80分求助

P1426 小鱼会有危险吗

```python i = input().split() s = int(i[0]) x = int(i[1]) v = 7 d = 0 while s-x >= d: d += v v *= 0.98 le = d-(s-x) sh = x*2-le if v >= sh: print('n') else: print('y') ```
by Gojosatoru @ 2023-07-31 03:21:01


```cpp #include<iostream> using namespace std; int main(){ double s,x,s1,b=7; cin>>s>>x; while(true){ s1+=b*0.98; b*=0.98; if(s1>s-x) break; } s1+=b; if(s1>=s+x) printf("n"); else printf("y"); } ``` - 我用C++也只有80分@[Gojosatoru](/user/1003348)
by yejuncenyyds @ 2023-07-31 05:34:28


@[my_name_is_my_name](/user/1044914) 首先,你有一种条件没有判断,就是小鱼还没有开始游就已经进入范围的条件,所以应该提前判断,如果是的话就直接越过while,AC代码如下 ```cpp #include<iostream> using namespace std; int main(){ double s,x,s1 = 0,b=7; cin>>s>>x; bool flag = 1; if(s1>s-x) flag = 0; while(true){ if(flag == 0){ break; } s1+=b*0.98; b*=0.98; if(s1>s-x) break; } s1+=b; if(s1>s+x) printf("n"); else printf("y"); }
by zhongboxuan123 @ 2023-07-31 07:19:19


@[my_name_is_my_name](/user/1044914) 我认为你的问题是:一、s1初始没有赋值为零;二、while结束条件的问题;三、 s1+=b*0.98 是错的,应为s1+=b。 必须指出,@zhougboxuan123 的代码是错误的,hack: ``` 10.5 3.5 ``` 这组hack数据也可以hack@[Gojosatoru](/user/1003348) 的代码
by emiermao @ 2023-07-31 07:38:00


哦,没有@上 @[zhongboxuan123](/user/478766) 你的AC是误打误撞的AC
by emiermao @ 2023-07-31 07:39:24


@[emiermao](/user/218051) 谢谢大佬
by yejuncenyyds @ 2023-07-31 13:22:07


@[zhongboxuan123](/user/478766) 谢谢
by yejuncenyyds @ 2023-07-31 13:23:08


|