小 A 需要移动 n−1 个单位长度。
小 A 每 1 秒可以移动 1 个单位长度,但是也可以花费时间在原地蓄力。例如,当 小 A 在 x 处蓄力了 i 秒时,它下一次就可以花费 1 秒跳到 x+i2
处,或者也可以选择继续蓄力。
当然,完成比赛是需要用身体接触红线的,因此 小 A 不可以跳过终点(也就是越过 n)。
求小 A 到达终点所需最短的时间。
#include<bits/stdc++.h>
using namespace std;
long long n,ans,a;
int main(){
ios::sync_with_stdio(0);
cin.tie(0),cout.tie(0);
cin>>n;
n--;
while(n>0){
if(n<=3){
ans+=n;break;
}
a=sqrt(n);
ans+=a+1;
n-=a*a;
}
cout<<ans;
return 0;
}
为什么只有 90 分