xml的网站地图织梦制作,浙江省建设注册管理中心网站首页,汕头百度快速优化排名,海南城乡住房建设厅网站题目背景
NOIP2014 普及 T1
题目描述
珠心算是一种通过在脑中模拟算盘变化来完成快速运算的一种计算技术。珠心算训练#xff0c;既能够开发智力#xff0c;又能够为日常生活带来很多便利#xff0c;因而在很多学校得到普及。
某学校的珠心算老师采用一种快速考察珠心算…题目背景
NOIP2014 普及 T1
题目描述
珠心算是一种通过在脑中模拟算盘变化来完成快速运算的一种计算技术。珠心算训练既能够开发智力又能够为日常生活带来很多便利因而在很多学校得到普及。
某学校的珠心算老师采用一种快速考察珠心算加法能力的测验方法。他随机生成一个正整数集合集合中的数各不相同然后要求学生回答其中有多少个数恰好等于集合中另外两个不同的数之和
最近老师出了一些测验题请你帮忙求出答案。
输入格式
共两行第一行包含一个整数 n n n表示测试题中给出的正整数个数。
第二行有 n n n 个正整数每两个正整数之间用一个空格隔开表示测试题中给出的正整数。
输出格式
一个整数表示测验题答案。
【数据说明】
对于 100 % 100\% 100% 的数据 3 ≤ n ≤ 100 3 \leq n \leq 100 3≤n≤100测验题给出的正整数大小不超过 10 , 000 10,000 10,000。
1.题目分析
这道题涉及到了桶排序的思想 大概的题意是输入N个数求任意两个数相加之和等于第三个数出现的次数值得注意的是这里是计算出现了多少次不同的和即第三个数出现的第一次才计数而不是计算出现了一共出现了多少次和。 所以这里我们想到了使用桶排序的标记思想定义一个大于数字大小范围的整型数组将所有元素初始化为0当出现满足条件的和时把和的数值当作数组的下标记录索引所在的值加一这样相同的和会记录下次数而数的大小会被当做数组的索引值记录下来。 对于这道题我们经过上述操作后直接遍历数组中不为0的元素计数器加一就可以得到最终结果。
2.题目思路
先定义一个整型数组起标记作用存放满足题目要求的整数 定义另外一个数组存放键入的数据写三次循环第一层循环代表第一个加数第二层循环代表第二个被加数第三层循环代表数组里的每一个数将加数和被加数计算得到的和与数组的每个数判断是否相等如果相等的话将和作为索引存放在标记数组数值加一。 最后定义一个计数器遍历标记数组如果元素不为0计数器加一打印结果。
3.代码演示
#include stdio.hint main(){//输入nint n;scanf(%d,n);//创建一个数组用于存放满足题目要求的整数int arr[10000] {0};int a;//用数组存放键入的整数int nums[101];for (int i 0; i n; i){scanf(%d,a);nums[i] a;}//第一个数ifor (int i 0; i n; i) {//第二数jfor (int j i1; j n; j) {//ij再与数组中的每一个数比较for (int k 0; k n; k) {//存在两数之和等于第三个数的情况则记录第三个数的下标if (nums[i]nums[j] nums[k]){//下标记录到arrarr[nums[k]]1;}}}}//计数器int count 0;//统计arr数组中有数字的下标即是满足要求的整数个数for (int i 0; i 10000; i){if (arr[i] ! 0){count;}}//打印结果printf(%d,count);return 0;
}