洛谷P2141 珠心算测验 题解

Mar 14th, 2019
  • 在其它设备中阅读本文章

Summary

洛谷 P2141 珠心算测验 的题解,
算法为 模拟 .

Link

题目链接

Text

基本思路是两重循环, 枚举 a,a+b, 然后判断 a 存不存在,b 存不存在,a+ b 存不存在.

Code

#include <stdio.h>
int main()
{
    int a[30020],b[105],c=0,n;
    for (int i=0;i<30020;i++) a[i]=0;//初始化(0表示不存在)
    scanf ("%d",&n);
    for (int i=0;i<n;i++)
    {
        scanf ("%d",&b[i]);//输入b[i]
        a[b[i]]=1;//现在有了b[i]
    }
    for (int i=0;i<n;i++)//循环a+b的值(b[i])
    {
        for (int j=1;j<b[i];j++)//循环a,b[i]-a就是b
        {
            if (a[j]/*a存不存在*/&&a[b[i]-j]/*b存不存在*/&&j!=b[i]-j/*a!=b*/)
            {
                c++;//累加
                break;//跳出循环(要注意多种a+b只要和相同就只算一次,所以找到一种就跳出循环!!!)
            }
        }
    }
    printf ("%d",c);
    return 0;
}

owo

mo-ha