文档详情

noip普及组复赛模拟试题12答案.doc

发布:2017-12-19约7.68千字共11页下载文档
文本预览下载声明
【试题描述】 读入二行整数,然后程序要完成如下的操作: 第一步 将2行数合并在一起, 第二步 将合并好的数由大到小排序, 第三步 重新排列,从第一个数起开始编号,然后将奇数号上的数(样例中的13,9,5)从前向后排,偶数号上的数(样例中的12,7,4)从后往前排。 第四步 计算,将排好的数,第一个+第二个数的2倍+第三个数的3倍+… 第五步:输出计算的结果。 【输入描述】 第一行是一个整数 n(1≤n≤10), 第二行有n个整数,整数范围在1~100之间,数与数之间空格隔开。 第三行是一个整数 m(1≤m≤10), 第四行有m个整数,整数范围在1~100之间,数与数之间空格隔开。 【输出描述】 一个整数(最后计算的结果)。 【输入样例】 4 12 4 5 9 2 13 7 【输出样例】 169 【解题提示】 样例说明: 第一步合并后为:12 4 5 9 13 7 第二步上例中的数成为:13 12 9 7 5 4 第三步得到:13 9 5 4 7 12 第四步计算后为:13+2×9+3×5+4×4+5×7+6×12=169 最后输出 169 【试题来源】 2008年江苏省小学生信息学(计算机)奥赛 program ex1731; var m,n,i,j,s,t,b1,b2:integer; a,b,c:array[1..20] of integer; sum:longint; begin readln(n); for i:=1 to n do read(a[i]); readln(m); for i:=1 to m do read(a[i+n]); s:=m+n; for i:=1 to s-1 do for j:=i+1 to s do if a[i]a[j] then begin t:=a[i]; a[i]:=a[j]; a[j]:=t; end; b1:=0;b2:=0; for i:=1 to s do if i mod 2=1 then begin inc(b1); b[b1]:=a[i];end else begin inc(b2); c[b2]:=a[i];end; for i:=1 to b1 do a[i]:=b[i]; for i:=1 to b2 do a[b1+i]:=c[b2-i+1]; sum:=0; for i:=1 to s do sum:=sum+i*a[i]; writeln(sum); end. 输入 6 15 34 25 9 22 39 4 23 17 46 57 输出 1496 输入10 15 34 25 9 22 39 47 12 33 99 8 23 17 46 57 51 8 38 64 输出 5687 SHLQSH数 ?问题描述: 我们把t1 , t2 (包括t1 , t2 (1=t1t2)之间的所有数的约数个数和n称为t1 , t2的shlqsh数; 问题是给出数据t1 , t2后,求t1 , t2的shlqsh数; ? 输入 输入文件 shlqsh.in 仅包含一行,共有两个整数,表示t1 t2 (用空格分开) ? 输出 输出文件shlqsh.out 仅有一个整数,表示t1 , t2之间的shlqsh数。 ? 输入样例: 2 6 ? 输出样例: 13 ?? 样例说明:(说明部分不必输出) ???? ???????2的约数有1,2 (2个); ??????????? 3的约数有1,3 (2个); ??????????? 4的约数有1,2,4 (3个); ??????????? 5的约数有1,5 (2个); ??????????? 6的约数有1,2,3,6 (4个)。 所以2 6 的shlqsh数为13 【数据规模】 ? ??对于50 %的数据,保证有t1,t2=5000000 ? ??对于全部的数据,保证有t1,t2====================================== 老师在考试的时候说。。下午讲题的时候..看着这道题的代码很多人要吐血.. ..果然... 求每个数的约数..若枚举每个数.这枚举量太大了... 应该枚举每个数的约束..累加约数和...这样O(N)的复杂度就可以OK了.. ======================== var
显示全部
相似文档