

代碼如下
#include<iostream> using namespace std; //注意數組長度 int number[10001]; // 定義輸入數組 int book[10001]; //定義標記數組(桶) int num[10001]; // 定義判斷輸出數組 int main() { int n; int maxn = -1; int ans = 0; cin >> n; for(int i = 1; i <= n; i++) { cin >> number[i]; //輸入 maxn = max(maxn,number[i]); //求出最大輸入數字,減少不必要的運行時間 book[number[i]] = 1; //標記,將輸入的數在桶中標記 } for(int i = 1; i <= maxn; i++) for(int j = i+1; j <= maxn; j++) { int k = i + j; // 兩者對應的下標和 if(k <= 10000) //注意長度 if(book[k] == book[i] * book[j] && book[k] != 0) // 判斷 num[k] = 1; // 符合題目, 將數字在數組中賦值為 1 } for(int i = 1; i <= maxn; i++) if(num[i] == 1) // 找出數組中符合題意的數, 即數組中為 1 的數 ans++; // 求個數 // cout << i << " "; cout << ans << endl; //輸出個數 return 0; }
