noip普及组复赛模拟试题12答案.doc
文本预览下载声明
【试题描述】
读入二行整数,然后程序要完成如下的操作:
第一步 将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
显示全部