11461 Square Number

必考題目之一

題目連結

題目敘述

一個「平方數」是指其平方根也是整數的整數
例如 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'; // 輸出次數
    }
}