天天看點

畫正方形(秋季每日一題 30)

現在,我們要在平面上畫出 個邊長為

注意,這

每個正方形的所有端點坐标都必須為整數,且所有邊都必須平行于坐标軸。

我們将逐邊繪制整個圖形。

當繪制某一條邊時,如果該邊的兩端端點為 和 ,而我們在之前已經繪制了一條端點為 和

同樣的,如果即将繪制的邊的兩端端點為 和 ,而我們在之前已經繪制了一條端點為 和

但是,如果即将繪制的邊不滿足上述條件,也就是不具備參考邊,則為了保證繪圖精确,我們需要借助尺子來繪制該條邊。

例如,當

畫正方形(秋季每日一題 30)

然後,借助以上兩邊完成剩餘兩邊的繪制:

畫正方形(秋季每日一題 30)

畫正方形(秋季每日一題 30)

然後,借助以上三邊完成剩餘所有邊的繪制:

畫正方形(秋季每日一題 30)

我們希望在畫出 個邊長為

請問,最少需要用尺子畫多少條邊。

輸入格式

第一行包含整數 ,表示共有

每組資料占一行,包含一個整數 。

輸出格式

每組資料輸出一行結果,表示需要用尺子繪制的最少邊數。

資料範圍

輸入樣例:

3
1
2
4      
2
3
4      
#include<iostream>

using namespace std;

int main(){
    
    int t;
    cin >> t;
    while(t--){
        
        int n;
        cin >> n;
        int res = n + 1;
        for(int a = 1; a <= (n + a - 1) / a; a++)
            res = min(res, a + (n + a - 1) / a);
        
        cout << res << endl;
    }
    
    return 0;
}