藍橋杯 大等於n的最小完全平方數 C++算法訓練 HERODING的藍橋杯之路

資源限制
時間限制:1.0s 內存限制:256.0MB
問題描述
  輸出大等於n的最小的完全平方數。
  若一個數能表示成某個自然數的平方的形式,則稱這個數爲完全平方數
  Tips:注意數據範圍
輸入格式
  一個整數n
輸出格式
  大等於n的最小的完全平方數
樣例輸入
71711
樣例輸出
71824
數據規模和約定
  n是32位有符號整數

解題思路:
當我看到這題時,第一想法是循環,直到找到平方大於等於n的,但是運行超時。於是想到一個更加便捷地方法,既然這個平方就在n的附近,不如直接將n根號,比根號的數相等或者大於一那便是最小完全平方數了,相等的情況是n恰好是最小完全平方數。當然還要注意n小於0的情況,代碼如下:

#include<bits/stdc++.h>

using namespace std;

int main() {
	long long m, n;
	cin >> n;
	m = sqrt(n * 1.0);
	if (n < 0){
		cout << "0" << endl;
	}
	else if (m * m == n){
		cout << n << endl;
	}
	else cout << (m + 1) * (m + 1) << endl;
	return 0;
} 

感謝這位博主的指導 https://blog.csdn.net/weixin_44237551/article/details/103427047

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章