題目描述
航天飛行器是一項複雜而又精密的儀器,飛行器的損耗主要集中在發射和降落的過程,科學家根據實驗數據估計,如果在發射過程中,產生了 x 程度的損耗,那麼在降落的過程中就會產生 x2 程度的損耗,如果飛船的總損耗超過了它的耐久度,飛行器就會爆炸墜毀。問一艘耐久度爲 h 的飛行器,假設在飛行過程中不產生損耗,那麼爲了保證其可以安全的到達目的地,只考慮整數解,至多發射過程中可以承受多少程度的損耗?
輸入描述:
每個輸入包含一個測試用例。每個測試用例包含一行一個整數 h (1 <= h <= 10^18)。
示例1
- 輸入 10
輸出
- 2
編程實現:
import java.util.Scanner;
/**
* 星際穿越
* @author cc_小白成長
*
*/
public class TestInterstellar {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
//注意 重點1 題目給定h值的範圍 1 <= h <= 10^18 明顯大於int類型的max值
long h = sc.nextLong();
long max = (long) Math.sqrt(h);//注意 重點2 使用sqrt函數平方根 縮小範圍,我們這裏只需要整數,允許精度損失
for(long i = max;i>=max/2;i--){
if((i*i+i)<=h){
System.out.println(i);
return ;
}
}
}
}
測試 :
12
結果:3
需要注意兩個重點的理解;
歡迎交流學習。