noip普及组复赛模拟试题14(附答案) 下载本文

内容发布更新时间 : 2024/5/13 14:23:21星期一 下面是文章的全部内容请认真阅读。

解的个数(count)

给定一个正整数K,问有多少和正整数X,Y满足X>=Y且1/K=1/X+1/Y,将所有解按X降序输出。 输入

第一行一个数T,表示数据组数 以下T行,每行一个数K 输出

T部分,每部分第一行一个数K,以下一次按X降序输出所有解,个数见样例,注意=+两边都有空格。 样例输入 2 2 12

样例输出 2

1/2 = 1/6 + 1/3 1/2 = 1/4 + 1/4 8

1/12 = 1/156 + 1/13 1/12 = 1/84 + 1/14 1/12 = 1/60 + 1/15 1/12 = 1/48 + 1/16 1/12 = 1/36 + 1/18 1/12 = 1/30 + 1/20 1/12 = 1/28 + 1/21 1/12 = 1/24 + 1/24

数据规模

30% K<=20

100% K<=10000,T<=10

标程:

var t,i,j,l,n,k:integer;

a:array[1..20] of integer;

b,c:array[1..10000] of longint;

procedure shou(n:integer);

var k,s:longint; begin

k:=n+1;s:=n*2;l:=0;

for i:=k to s do

begin

if n*i mod (i-n)=0 then

begin

inc(l);

b[l]:=(n*i) div (i-n);c[l]:=i;

end;

end; end; begin

assign(input,'count.in');

reset(input);

assign(output,'count.out');

rewrite(output);

readln(t);

for i:=1 to t do

readln(a[i]);

for k:=1 to t do

begin

shou(a[k]);

writeln(l);

for j:=1 to l do

writeln(1,'/',a[k],' ','=',' ',1,'/',b[j],' ','+',' ',1,'/',c[j]);

end;

close(input);

close(output); end. 输入 3 4 15 32 输出 3

1/4 = 1/20 + 1/5 1/4 = 1/12 + 1/6 1/4 = 1/8 + 1/8 5

1/15 = 1/240 + 1/16 1/15 = 1/90 + 1/18 1/15 = 1/60 + 1/20 1/15 = 1/40 + 1/24 1/15 = 1/30 + 1/30 6

1/32 = 1/1056 + 1/33 1/32 = 1/544 + 1/34 1/32 = 1/288 + 1/36 1/32 = 1/160 + 1/40 1/32 = 1/96 + 1/48 1/32 = 1/64 + 1/64

不等数列(num.cpp/c/pas)【题目描述】将1到n任意排列,然后在排列的每两个数之间根据他们的大小关系插入“>”和“<”。问在所有排列中,有多少个排列恰好有k个。答案对2012取模。

【输入格式】

第一行2个整数n,k。