begin
m:=1; y:=y+1; end; end; exit; end;
if (y mod 4=0)and(m=2) then begin
flag:=29; en d
else begin
case m of
1,3,5,7,8,10,12:flag:=31; 4,6,9,11:flag:=30; 2:flag:=28; end; end;
if d>flag then begin
d:=1; m:=m+1;
if m=13 then begin
m:=1; y:=y+1; end; end; end;
begin
assign(input,'BIRTHDAY.DAT'); assign
(output,'BIRTHDAY.OUT'); reset(input); rewrite(output); read(y); read(m); read(d);
for i:=1 to 10000 do begin
incdate(); end;
write(y,'-',m,'-',d); close(input); close(output); end.
265、 分解因式 ( Factor ) 问题描述:
一个自然数N的正因子个数记为F(N),例如18的所有正因子为1、2、3、6、9、18,所以F(18)=6。现在给出K,求所有满足F(N)=K的N中最小的数。
输入格式:
从文件读入数据,第一行为K,其中0 输出格式: 输出到文件第一行,如果存在不大于20000的解,则输出这个N,否则输出“NO SOLUTION”。 样例1: FACTOR.DAT FACTOR.OUT 9样例2: FACTOR.DAT FACTOR. var i:longint; n:integer; function getfactor(x:longint):integer; var m:longint; r:integer; begin r:=0; for m:=1 to x do begin if x mod m=0 then r:=r+1; end; getfactor:=r; end; begin assign(input,'FACTOR.DAT'); assign(output,'FACTOR.OUT'); reset(input); rewrite(output); read(n); for i:=1 to 20000 do begin {writeln(i);} if getfactor(i)=n then begin write(i); close(input); close(output); halt; end; end; write('NO SOLUTION'); close(input); close(output); end. 266 、 K好数(K-Good Number) 问题描述: 如果一个自然数N的K进制表示中任意的相邻的两位都不是相邻的数字,那么我们就说这个数是K好数。求L位K进制数中K好数的数目。例如K = 4,L = 2的时候,所有K好数为11、13、20、22、30、31、33 共7个。给定K、L,求L位K好数的数目。 输入格式: 从文件读入数据,第一行为K、L,其中K<=16,L<=10。 输出格式: 将结果输出到 KGOOD.OUT 样例 KGOOD.DAT KGOOD.OUT 4 2 7 var k,l,n:integer; a:array [1..16] of integer; test:boolean; procedure getnum(i:integer); var m,j,s:integer; begin if i=1 then s:=1 else s:=0; for m:=s to k-1 do begin a[i]:=m; if i=l then begin test:=true; for j:=1 to l-1 do begin if (a[j]-a[j+1])*(a[j]-a[j+1])=1 then begin test:=false; end; end; if test then begin n:=n+1; end; end else begin getnum(i+1); end; end; end; begin assign(input,'KGOOD.DAT'); assign(output,'KGOOD.OUT'); reset(input); rewrite(output); read(k); read(l); for n:=1 to l do begin a[n]:=0; end; n:=0; getnum(1); write(n); close(input); close(output); end. 267、Sramoc问题 ( Sramoc Problem ) 问题描述: Sramoc ( K , M ) 表示用数字0、1、2?、K-1组成的自然数中能被M整除的最小数。给定 K、M,求Sramoc ( K,M )。例如 K=2,M=7的时候,Sramoc( 2 , 7 ) = 1001。 输入格式: 从文件SRAMOC.DAT读入数据。第一行为两个整数K、M满足2<=K<=10、1<=M<=1000。 输出格式: 输出Sramoc(K,M) 到 SRAMOC.OUT。 样例 SRAMOC.DA T SRAMOC.OUT 2 7 1001 var k,m,n,l:integer; a1,a2:longint; a:array [1..100] of integer; test:boolean; procedure getnum(i:integer); var j,x:integer; s:longint; begin if test then exit; for x:=0 to k-1 do begin a[i]:=x; if i=l then begin s:=0; for j:=1 to l do s:=s*10+a[j]; if s=0 then continue; if s mod m=0 then begin test:=true; n:=s; break; end; end else begin