珠心算测验 C / C++

珠心算测验 C / C++

珠心算测验 C / C++

代码如下

#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;
 }