题目描述

珠心算是一种通过在脑中模拟算盘变化来完成快速运算的一种计算技术。珠心算训练,既能够开发智力,又能够为日常生活带来很多便利,因而在很多学校得到普及。
    某学校的珠心算老师采用一种快速考察珠心算加法能力的测验方法。他随机生成一个正整数集合,集合中的数各不相同,然后要求学生回答:其中有多少个数,恰好等于集合中另外两个(不同的)数之和?
    最近老师出了一些测验题,请你帮忙求出答案。

输入格式:
输入共两行,第一行包含一个整数n,表示测试题中给出的正整数个数。

第二行有n个正整数,每两个正整数之间用一个空格隔开,表示测试题中给出的正整数。
输出格式:
输出共一行,包含一个整数,表示测验题答案。

输入输出样例

样例测试点#1
输入样例:
4
1 2 3 4
输出样例:
2

说明
【样例说明】

由1+2=3,1+3=4,故满足测试要求的答案为2。注意,加数和被加数必须是集合中的两个不同的数。

【数据说明】

对于100%的数据,3 ≤ n ≤ 100,测验题给出的正整数大小不超过10,000。

解决思路:

这个题目有个比较容易出错的陷阱:题目是要判断每一个数是否能由另外两个相加构成,而不是要判断任意两个数相加的结果是否等于数组当中的某一个值。(嗯这个话说出来差不多一个样但是意思却不一样,写代码的时候循环的顺序也不一样。)

这个题目数据量比较小O(n^3)算法也还能承受,但是要注意去重。

 #include<stdio.h>
#include<stdlib.h>
int cmp(const void *a,const void *b);
int main()
{
int n,i,a[]={};
int ans=;
int j,k,flag; scanf("%d",&n);
for(i=;i<n;i++)
{
scanf("%d",&a[i]);
}
qsort(a,n,sizeof(a[]),cmp);
for(i=;i<n;i++)
{
flag=;
for(j=;j<n&&(a[j]<=a[i]);j++)
{
for(k=j+;k<n&&(a[j]+a[k]<=a[i]);k++)
{
if(a[i]==a[j]+a[k])
{
ans++;
flag=;
break;
}
}
if(flag==) break;
}
}
printf("%d\n",ans);
return ;
}
int cmp(const void *a,const void *b)
{
return *(int *)a-*(int *)b;
}

下面是带有条件编译的代码:

 #include<stdio.h>
#include<stdlib.h>
#include<time.h> #define localCompile 0 int cmp(const void *a,const void *b);
int main()
{
int n,i,a[]={};
int ans=;
int j,k,flag; scanf("%d",&n);
#ifdef localCompile
srand((unsigned)time());
#endif
for(i=;i<n;i++)
{
#ifdef localCompile
a[i]=rand()%+;
#else
scanf("%d",&a[i]);
#endif
}
#ifdef localCompile
for(i=;i<n;i++)
{
printf("%d ",a[i]);
if((i+)%==) printf("\n");
}
if(i%==)
printf("-----------------------\n");
else printf("\n-----------------------\n");
#endif
qsort(a,n,sizeof(a[]),cmp);
#ifdef localCompile
for(i=;i<n;i++)
{
printf("%d ",a[i]);
if((i+)%==) printf("\n");
}
if(i%==)
printf("-----------------------\n");
else printf("\n-----------------------\n");
#endif for(i=;i<n;i++)
{
flag=;
for(j=;j<n;j++)
{
for(k=j+;k<n&&(a[j]+a[k]<=a[i]);k++)
{
if(a[i]==a[j]+a[k])
{
#ifdef localCompile
printf("case %2d: %d=%d+%d\n",ans+,a[i],a[j],a[k]);
#endif
ans++;
flag=;
break;
}
}
if(flag==) break;
}
}
printf("%d\n",ans);
return ;
}
int cmp(const void *a,const void *b)
{
return *(int *)a-*(int *)b;
}

noip2014普及组——珠心算测验的更多相关文章

  1. NOIP201401珠心算测验

    珠心算测验  问题描述]  珠心算是一种通过在脑中模拟算盘变化来完成快速运算的一种计算技术.珠心算训练,既能够开发智力,又能够为日常生活带来很多便利,因而在很多学校得到普及.  某学校的珠心算老师采用 ...

  2. 洛谷——P2141 珠心算测验

    P2141 珠心算测验 题目描述 珠心算是一种通过在脑中模拟算盘变化来完成快速运算的一种计算技术.珠心算训练,既能够开发智力,又能够为日常生活带来很多便利,因而在很多学校得到普及. 某学校的珠心算老师 ...

  3. 珠心算测验(0)<P2014_1>

    珠心算测验 (count.cpp/c/pas) 问题描述]  珠心算是一种通过在脑中模拟算盘变化来完成快速运算的一种计算技术.珠心算训练,既能够开发智力,又能够为日常生活带来很多便利,因而在很多学校得 ...

  4. [NOIP2014] 普及组

    珠心算测验 模拟. 将所有“两个不同数之和”装进桶里,扫描原数组记录满足条件的数的个数. /*by SilverN*/ #include<iostream> #include<alg ...

  5. 【NOIP2014 普及组】螺旋矩阵

    [NOIP2014 普及组]螺旋矩阵 一.题目 [NOIP2014 普及组]螺旋矩阵 时间限制: 1 Sec  内存限制: 128 MB 提交: 18  解决: 0 [提交][状态][讨论版] 题目描 ...

  6. NOIP2014-普及组复赛-第一题-珠心算测验

    题目描述 Description 珠心算是一种通过在脑中模拟算盘变化来完成快速运算的一种计算技术.珠心算训练,既能够开发智力,又能够为日常生活带来很多便利,因而在很多学校得到普及. 某学校的珠心算老师 ...

  7. P2141 珠心算测验

    P2141 题目描述 珠心算是一种通过在脑中模拟算盘变化来完成快速运算的一种计算技术.珠心算训练,既能够开发智力,又能够为日常生活带来很多便利,因而在很多学校得到普及. 某学校的珠心算老师采用一种快速 ...

  8. 【枚举】珠心算测验[c++]

    题目描述 珠心算是一种通过在脑中模拟算盘变化来完成快速运算的一种计算技术.珠心算训练,既能够开发智力,又能够为日常生活带来很多便利,因而在很多学校得到普及. 某学校的珠心算老师采用一种快速考察珠心算加 ...

  9. set解两数之和--P2141 珠心算测验

    题目描述 珠心算是一种通过在脑中模拟算盘变化来完成快速运算的一种计算技术.珠心算训练,既能够开发智力,又能够为日常生活带来很多便利,因而在很多学校得到普及. 某学校的珠心算老师采用一种快速考察珠心算加 ...

随机推荐

  1. SQUID之cache_peer

    一共关系到cache_peer/always_direct/never_direct/hierarchy_stoplist/prefer_direct等配置项. squid的使用指南上,关于alway ...

  2. ZJOI 仓库建设 (斜率DP)

    f[i]=min(f[j]+w[j,i])+c[i];  j∈[0,i-1] w[j,i]=p[j+1]*(x[i]-x[j+1])+...+p[i]*(x[i]-x[i]); 最裸的DP是n^2的, ...

  3. C#使用指针复制字节数组

    下面的示例使用指针将字节从一个数组复制到另一个数组. 此示例使用 unsafe 关键字,它使您能够在 Copy 方法中使用指针. fixed 语句用于声明指向源数组和目标数组的指针. 这将锁定源数组和 ...

  4. HDU 3351

    http://acm.hdu.edu.cn/showproblem.php?pid=3351 乍一看很像经典的括号匹配问题,其实不然,因为操作并非增加括号,而是翻转括号 只需记录多余的左括号的数量即可 ...

  5. 修正magento快速搜索返回结果不准确

    有时候发现用magento的mini 快速搜索搜出来的结果一点都不准确,跟实际结果相差甚大,这里发现修改一个地方即可修复这个问题. 打开app/code/core/Mage/CatalogSearch ...

  6. 如何配置magento免运费商品方法

    作为magento电商来说,免运费是一种常见的促销手段,要让产品成为免运费对magento来说并不难,后台操作即可完成. 首先,我们要建立一个新的产品属性. catalog->attribute ...

  7. web app 变革之rem

    rem这是个低调的css单位,近一两年开始崭露头角,有许多同学对rem的评价不一,有的在尝试使用,有的在使用过程中遇到坑就弃用了.但是我对rem综合评价是用来做web app它绝对是最合适的人选之一. ...

  8. FreeBSD基金会添加新成员,梁莉成为第一位来自微软和中国的基金会董事

    这个月23日FreeBSD基金会很高兴地宣布Philip Paeps和Kylie Liang (梁莉)正式加入董事会. 梁莉,现任微软开源技术部高级项目经理,主要负责FreeBSD在公有云以及私有云的 ...

  9. HDFS+MapReduce+Hive+HBase十分钟快速入门

    1.     前言 本文的目的是让一个从未接触Hadoop的人,在很短的时间内快速上手,掌握编译.安装和简单的使用. 2.     Hadoop家族 截止2009-8-19日,整个Hadoop家族由以 ...

  10. 总结 group by 的用法

    今天用实例总结一下group by的用法. 归纳一下:group by:ALL ,Cube,RollUP,Compute,Compute by 创建数据脚本 Create Table SalesInf ...