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)算法也还能承受,但是要注意去重。

 1 #include<stdio.h>
 2 #include<stdlib.h>
 3 int cmp(const void *a,const void *b);
 4 int main()
 5 {
 6     int n,i,a[103]={0};
 7     int ans=0;
 8     int j,k,flag;
 9     
10     scanf("%d",&n);
11     for(i=0;i<n;i++)
12     {
13         scanf("%d",&a[i]);
14     }
15     qsort(a,n,sizeof(a[0]),cmp);
16     for(i=0;i<n;i++)
17     {
18         flag=0;
19         for(j=0;j<n&&(a[j]<=a[i]);j++)
20         {
21             for(k=j+1;k<n&&(a[j]+a[k]<=a[i]);k++)
22             {
23                 if(a[i]==a[j]+a[k])
24                 {
25                     ans++;
26                     flag=1;
27                     break;
28                 }
29             }
30             if(flag==1) break;
31         }
32     }
33     printf("%d\n",ans);
34     return 0;
35 }
36 int cmp(const void *a,const void *b)
37 {
38     return *(int *)a-*(int *)b;
39 }
View Code

 

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

 1 #include<stdio.h>
 2 #include<stdlib.h>
 3 #include<time.h>
 4 
 5 #define localCompile 0
 6 
 7 int cmp(const void *a,const void *b);
 8 int main()
 9 {
10     int n,i,a[103]={0};
11     int ans=0;
12     int j,k,flag;
13     
14     scanf("%d",&n);
15     #ifdef localCompile
16         srand((unsigned)time(0));
17     #endif
18     for(i=0;i<n;i++)
19     {
20         #ifdef localCompile
21             a[i]=rand()%80+20;
22         #else
23             scanf("%d",&a[i]);
24         #endif
25     }
26     #ifdef localCompile
27         for(i=0;i<n;i++)
28         {
29             printf("%d ",a[i]);
30             if((i+1)%5==0) printf("\n");
31         }
32         if(i%5==0)
33             printf("-----------------------\n");
34         else printf("\n-----------------------\n");
35     #endif
36     qsort(a,n,sizeof(a[0]),cmp);
37     #ifdef localCompile
38         for(i=0;i<n;i++)
39         {
40             printf("%d ",a[i]);
41             if((i+1)%5==0) printf("\n");
42         }
43         if(i%5==0)
44             printf("-----------------------\n");
45         else printf("\n-----------------------\n");
46     #endif
47     
48     for(i=0;i<n;i++)
49     {
50         flag=0;
51         for(j=0;j<n;j++)
52         {
53             for(k=j+1;k<n&&(a[j]+a[k]<=a[i]);k++)
54             {
55                 if(a[i]==a[j]+a[k])
56                 {
57                     #ifdef localCompile
58                         printf("case %2d: %d=%d+%d\n",ans+1,a[i],a[j],a[k]);
59                     #endif
60                     ans++;
61                     flag=1;
62                     break;
63                 }
64             }
65             if(flag==1) break;
66         }
67     }
68     printf("%d\n",ans);
69     return 0;
70 }
71 int cmp(const void *a,const void *b)
72 {
73     return *(int *)a-*(int *)b;
74 }
View Code

 

相关文章
|
IDE Linux 开发工具
Linux系统、版本、CPU、内存查看、硬盘空间
*查看系统版本:lsb_release -a [root@localhost /]# lsb_release -a *查看内核版本:uname -a *查看cpu型号:cat /proc/cpuinfo [root@localhost /]# cat ...
5063 0
最大流圆桌问题(二分图多重匹配问题)
最大流圆桌问题(二分图多重匹配问题)
94 0
|
缓存 并行计算 PyTorch
win11+pytorch1.7.0+python3.8(也可以是python3.7)+cuda11.0
win11+pytorch1.7.0+python3.8(也可以是python3.7)+cuda11.0
643 0
|
安全 数据安全/隐私保护
解释 TCSEC 和 ITSEC
【8月更文挑战第31天】
666 0
|
运维 数据可视化 数据挖掘
HDBSCAN,一个强大的 Python 层次聚类算法库!
HDBSCAN,一个强大的 Python 层次聚类算法库!
656 1
|
算法 计算机视觉 知识图谱
ACL2022:A Simple yet Effective Relation Information Guided Approach for Few-Shot Relation Extraction
少样本关系提取旨在通过在每个关系中使用几个标记的例子进行训练来预测句子中一对实体的关系。最近的一些工作引入了关系信息
228 0
|
机器学习/深度学习 人工智能 物联网
快速玩转 Llama2!机器学习 PAI 最佳实践(三)—快速部署WebUI
本实践将采用阿里云机器学习平台PAI-EAS 模块针对 Llama-2-13B-chat 进行部署。PAI-EAS是模型在线服务平台,支持将模型一键部署为在线推理服务或AI-Web应用,具备弹性扩缩的特点,适合需求高性价比模型服务的开发者。
1949 4
|
机器学习/深度学习 算法 数据挖掘
【Science】颠覆三观的超强聚类算法
【Science】颠覆三观的超强聚类算法
257 0
【Science】颠覆三观的超强聚类算法
|
数据采集 PyTorch API
图片识别转公式,GitHub 又一 LaTeX 神器面世
只需要把公式图片用鼠标拖动到工具内,就能一键转成 LaTex 公式。 写论文、做研究时,最让你头疼的是什么?想必公式编辑会榜上有名。那么有没有便捷的方法进行公式编辑呢?这里推荐一款神器,它使用 PyTorch Lightning 可将 LaTeX 数学方程的图像映射到 LaTeX 代码。 它的效果是这样的,输入一张带公式的图片,它能转换成 LaTeX 代码形式:
|
机器学习/深度学习 人工智能 自然语言处理
商汤的数字人研究,在CVPR上成了爆款
在 CVPR 大会上,看数字人技术的最新趋势。
834 0
商汤的数字人研究,在CVPR上成了爆款