noip2014普及组——珠心算测验
题目描述
珠心算是一种通过在脑中模拟算盘变化来完成快速运算的一种计算技术。珠心算训练,既能够开发智力,又能够为日常生活带来很多便利,因而在很多学校得到普及。
某学校的珠心算老师采用一种快速考察珠心算加法能力的测验方法。他随机生成一个正整数集合,集合中的数各不相同,然后要求学生回答:其中有多少个数,恰好等于集合中另外两个(不同的)数之和?
最近老师出了一些测验题,请你帮忙求出答案。
输入格式:
输入共两行,第一行包含一个整数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普及组——珠心算测验的更多相关文章
- NOIP201401珠心算测验
珠心算测验 问题描述] 珠心算是一种通过在脑中模拟算盘变化来完成快速运算的一种计算技术.珠心算训练,既能够开发智力,又能够为日常生活带来很多便利,因而在很多学校得到普及. 某学校的珠心算老师采用 ...
- 洛谷——P2141 珠心算测验
P2141 珠心算测验 题目描述 珠心算是一种通过在脑中模拟算盘变化来完成快速运算的一种计算技术.珠心算训练,既能够开发智力,又能够为日常生活带来很多便利,因而在很多学校得到普及. 某学校的珠心算老师 ...
- 珠心算测验(0)<P2014_1>
珠心算测验 (count.cpp/c/pas) 问题描述] 珠心算是一种通过在脑中模拟算盘变化来完成快速运算的一种计算技术.珠心算训练,既能够开发智力,又能够为日常生活带来很多便利,因而在很多学校得 ...
- [NOIP2014] 普及组
珠心算测验 模拟. 将所有“两个不同数之和”装进桶里,扫描原数组记录满足条件的数的个数. /*by SilverN*/ #include<iostream> #include<alg ...
- 【NOIP2014 普及组】螺旋矩阵
[NOIP2014 普及组]螺旋矩阵 一.题目 [NOIP2014 普及组]螺旋矩阵 时间限制: 1 Sec 内存限制: 128 MB 提交: 18 解决: 0 [提交][状态][讨论版] 题目描 ...
- NOIP2014-普及组复赛-第一题-珠心算测验
题目描述 Description 珠心算是一种通过在脑中模拟算盘变化来完成快速运算的一种计算技术.珠心算训练,既能够开发智力,又能够为日常生活带来很多便利,因而在很多学校得到普及. 某学校的珠心算老师 ...
- P2141 珠心算测验
P2141 题目描述 珠心算是一种通过在脑中模拟算盘变化来完成快速运算的一种计算技术.珠心算训练,既能够开发智力,又能够为日常生活带来很多便利,因而在很多学校得到普及. 某学校的珠心算老师采用一种快速 ...
- 【枚举】珠心算测验[c++]
题目描述 珠心算是一种通过在脑中模拟算盘变化来完成快速运算的一种计算技术.珠心算训练,既能够开发智力,又能够为日常生活带来很多便利,因而在很多学校得到普及. 某学校的珠心算老师采用一种快速考察珠心算加 ...
- set解两数之和--P2141 珠心算测验
题目描述 珠心算是一种通过在脑中模拟算盘变化来完成快速运算的一种计算技术.珠心算训练,既能够开发智力,又能够为日常生活带来很多便利,因而在很多学校得到普及. 某学校的珠心算老师采用一种快速考察珠心算加 ...
随机推荐
- struts2中form提交到action中的中文参数乱码问题解决办法(包括取中文路径)
我的前台页是这样的: <body> <form action="test.action" method="post"> ...
- Windows下adb push 总是提示Failed to copy "XX.apk" to 'system/app':Read-only file system
一般情况看到这种提示我们会想到需要root权限,然后敲上adb remount,但是当我们执行过adb remount后,提示成功,但执行push命令依旧无法完成push. 那么此时我们的做法应该是重 ...
- Svn win7系统下状态图标不显示-转载
Svn win7系统下状态图标不显示 Svn版本 tortoisesvn-1.8.8.25755-x64-svn-1.8.10.msi 2.不显示图标状态如图1,期望结果显示图标状态如图2 图1 图2 ...
- XML JSON解析--基本功能
一,json的解析 json文件: {"code": "cn","cities": [{"name": " ...
- LeetCode Rotate Image (模拟)
题意: 将一个n*n的矩阵顺时针旋转90度. 思路: 都是差不多的思路,交换3次也行,反转再交换也是行的. class Solution { public: void rotate(vector< ...
- subprocess module
subprocess 主要用于执行外部命令和程序, 极大的增强了Python的功能. 比如你要用bowtie, 你可以在python中调用这个程序. 运行python时,我们都是在创建并运行一个进程, ...
- 命令行创建畸形文件夹+畸形目录管理工具(DeformityPath)
命令行创建畸形文件夹: 第一步:在运行中输入cmd,回车,打开命令行窗口 第二步:在命令行窗口中切换到想要建立文件夹的硬盘分区,如D盘(输入d:) 第三步:输入 MD 123..\ 回车,注意文件夹名 ...
- ubuntu默认root密码
安装完Kubuntu后一直都是用我的用户名bbking登录, 一直没想到root的问题, 以为每次sudo输入的密码就是我的root密码. 刚才为了修改文件夹的所有者,想使用su root切换到roo ...
- Oracle执行语句跟踪(2)——使用10046事件实现语句追踪
接上篇博文Oracle执行语句跟踪(1)--使用sql trace实现语句追踪,一旦我们通过会话追踪获取到超时事物的执行语句,就可以使用10046事件对语句进行追踪. 启用10046事件追踪的方式 S ...
- 彻底弄懂css中单位px和em,rem的区别 转的自己看
国内的设计师大都喜欢用px,而国外的网站大都喜欢用em和rem,那么三者有什么区别,又各自有什么优劣呢? PX特点 1. IE无法调整那些使用px作为单位的字体大小: 2. 国外的大部分网站能够调整的 ...