最近看了一个星际迷航的题目,突然发现自己的数学水平都没有初中水准了
说是一个卫星发射损耗x,回收损耗x^2,那么问一艘耐久度为 h 的飞行器,假设在飞行过程中不产生损耗,那么为了保证其可以安全的到达目的地,只考虑整数解,至多发射过程中可以承受多少程度的损耗?
这个题目乍一看根本不能算是算法题啊,只能算小学一元二次方程的题目。
但是写着写着,突然不会算x+x^2<=h,怎么求x。。。。。。
后来经过多次绞尽脑汁,最终才想通了算法:(x+1/2)^2 <=h+1/4
再次验证了算法就是搞数学啊,code很简单简单贴一下,主要是思想
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
long long h;
cin>>h;
long long x = sqrt(h+0.25)-0.5;
cout<<x<<endl;
return 0;
}