Codebar 程式酒吧

一座輕鬆學習程式的酒吧

0%

a059. 完全平方和

題目連結

https://zerojudge.tw/ShowProblem?problemid=a059

解題思路

題目希望我們求出在a、b之間的所有完全平方數總和,理論上要用for迴圈跑從a到b之間的所有數字,檢查他們是否為完全平方數,若是則將他們相加,最後再輸出其總和,但這麼做的話需要在for迴圈裡加上條件判斷。因此我們也可以換種方式思考,若 a ≤ x2 ≤ b ,可知 √a ≤ x ≤ √b ,故只要找出在√a及√b之間的正整數,將他們的平方相加,即為在a、b之間所有完全平方數的和。

注意事項

本題中使用了ceil()函式對參數無條件進位(向上取整),以及sqrt()函式對參數開根。由於ceil()函式和sqrt()函式皆非標準函式庫裡的函式,使用前必須引用 <math.h> 函式庫。

程式碼:C語言

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <stdio.h>
#include <math.h>
int main () {
//宣告並讀取變數T,代表測資筆數
int T;
scanf("%d", &T);
//用for迴圈跑T筆測資
for(int i = 1 ; i <= T ; i++) {
//宣告並讀取變數a、b,代表數字範圍的上下限
//宣告變數sum,設初始值為0,代表a、b之間的完全平方和
int a, b, sum = 0;
scanf("%d %d", &a, &b);
//用for迴圈跑從√a到√b之間的所有數,將他們的平方相加求出平方和
for(int num = ceil(sqrt(a)) ; num <= sqrt(b) ; num++)
sum += num*num;
//輸出
printf("Case %d: %d\n", i, sum);
}
return 0;
}