Wannafly挑戰賽27 - A 灰魔法師
阿新 • • 發佈:2018-11-03
連結:https://www.nowcoder.com/acm/contest/215/A
來源:牛客網
時間限制:C/C++ 1秒,其他語言2秒
空間限制:C/C++ 262144K,其他語言524288K
64bit IO Format: %lld
題目描述
“White shores, and beyond. A far green country under a swift sunrise.”--灰魔法師
給出長度為n的序列a, 求有多少對數對 (i, j) (1 <= i < j <= n) 滿足 ai + aj 為完全平方數。
輸入描述
第一行一個整數 n (1 <= n <= 10^5)
第二行 n 個整數 ai (1 <= ai <= 10^5)
輸出描述
輸出一個整數,表示滿足上述條件的數對個數。
輸入
3
1 3 6
輸出
2
說明
滿足條件的有 (1, 2), (2, 3) 兩對。
解題思路
直接暴力就可以了。
#include <stdio.h> #define N 250050 int a[N]; int main() { int m, n; long long sum = 0; scanf("%d", &n); for (int i = 0; i < n; i++) { scanf("%d", &m); for (int j = 1; j < 500; j++)//遍歷1~250000之間的完全平方數 if (j * j >= m) sum += a[j * j - m];//首先滿足j * j - m >= 0,然後用j * j - m與前面的m配對 a[m]++;//m的個數加1,放在後面就是保證j * j - m與前面的m配對,不包括它本身 } printf("%lld\n", sum); return 0; }