開啟章節選單

11461 Square Numbers

必考題目之一

題目連結

題目敘述

一個「平方數」是指其平方根也是整數的整數
例如 1、4、81 都是平方數
給定兩個整數 a 與 b
你需要計算在區間 a, b(含端點)之中
有多少個平方數

輸入格式

多行輸入,每行包含兩個整數 a 和 b(0 < a ≤ b ≤ 100000)
輸入以一行 “0 0” 終止,這一行不做處理

輸出格式

對於每一行有效輸入,輸出一行整數
表示在 a, b 範圍內的平方數個數

解題思路

使用 for 迴圈檢查 a ~ b 之間的數字 i
使用 sqrt() 開根號函式來判斷 i 開根號過後是否為整數
若為整數即為平方數

程式碼

#include <bits/stdc++.h>
using namespace std;

int main() {
  int a, b;
  while (cin >> a >> b, a + b) {  // 重複輸入兩整數,若兩整數皆為 0 則終止
    int cnt = 0;                  // 紀錄平方數出現的次數
    for (int i = a; i <= b; i++)
      cnt += sqrt(i) ==
             (int)sqrt(i);  // 使用 for 迴圈檢查 a ~ b 之間的數字 i 是否為平方數
    cout << cnt << '\n';  // 輸出次數
  }
}