农民工一道题难倒清华,有两个数-4和6它们的积为x,它们的倒数和是y,它们和的倒数为z,求x➗y乘z的值是多少

信息学奥林匹克竞赛辅导――程序设计试题答案部分--荆晓虹的教学空间
时 间 记 忆
最 新 评 论
最 新 文 章
最 新 留 言
用 户 登 录
友 情 连 接
网 站 信 息
信息学奥林匹克竞赛辅导――程序设计试题答案部分
19:08:00 | By: 虫子 ]
答案部分:
& truefalse
function prime(x:longint):
&&& prime:=
&&& if x&2 then
&&& y:=trunc(sqrt(x));
&&& for j:=2 to y do
&&&&& if (x mod j = 0) then
&&&&&&& begin prime:=
1100235711131719232931374143475359616771737983899725
& truefalse
function huiwen(n:longint):
&&& m,i,j:
&&& a:array[1..10]
&&& if n&0 then begin
&&& m:=n;& i:=0;&
&&& repeat
&&&&& i:=i+1;
&&&&& a[i]:=m mod 10;
&&&&& m:=m div 10;
&&& until m=0;
&&& for j:=1 to (i div 2) do
&&&&& if a[j]&&a[i-j+1]
&&&&& begin
huiwen:=&&
gcd(a,b:longint):
&&& if b=0 then gcd:=a
&&& else gcd:=gcd(b,a mod b);
& lcm=a*b div gcd(a,b);
2、ax2bxC0
a1b5c6x12x23
Ifa5b6c714.7
If345456YesNo
If190020002008NoYesYes
9、S123100 5050
&&&&&&&&&&&&&& 3&&&&&&&&&&&&& 4
15.19223383503255041717
& for i:=1 to
10000 do& s:=s+1/(i*i);
writeln(sqrt(6*s));
11、n!n!123nn10
12、123512Fibonacci
123581321345589144233233
14、π。,直到最后一项的值小于10-6为止。
&&&&&&&&&&&&&&&&&&&& (答案:3.E+00)
n:=1;& s:=0;& t:=1;&
& while (abs(t)&=1e-6) do
&&& begin&
t:=fh/n; &s:=s+t;& n:=n+2;&
& writeln('pi=',p);
(计算前10000项时,答案为3.)
for i:=1 to 10000 do& begin& a:=(4*i-3);&
b:=(4*i-1);& s:=s+1/(a*b);&
writeln(8*s);
15、求100~999中的水仙花数。(若三位数ABC,ABC=A3+B3+C3,则称ABC为水仙花数。例如153,13+53+33=153,则153是水仙花数。)&&&&&&&&&&&&&&&&&&&&&&&&
(答案:153、370、371、407)
program e12;
& i,a,b,c:
& for i:=100 to 999 do
&&&& &a:=i div 100;
&&&&& b:=(i mod 100) div 10;
&&&&& c:=i mod 10;
&&&&& if i=a*a*a+b*b*b+c*c*c then write(i:8);
16、&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
const n=5;
i:=1 to n do
&&& write('':i);
&&& for j:=1 to (n-i)*2+1 do write('A');
17、&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
1、abjc&&&&&&&&&&&
(测试数据:输入a=3、b=4、jc=90;&&& 输出5)
program e2_5;
& a,b,c,jc:
& writeln('input a,b,jc:');& readln(a,b,jc);
& c:=sqrt(a*a+b*b-2*a*b*cos(pi*jc/180));
& writeln(c:8:2);
2、35811853&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
const n=3581;
& a,b,c,d:
& a:=n mod 10;
& b:=(n div 10) mod 10;
& c:=(n div 100) mod 10;
& d:=n div 1000;
& writeln(a,b,c,d);
writeln('input a integer number:');&
readln(n);
&&& write(n mod 10);& n:=n div 10;
& until n=0;
3、abc&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& If
& writeln('input three number for a,b,c:');
& readln(a,b,c);
& if (a&b)and(a&c) then writeln(a);
& else if (b&a)and(b&c) then writeln(b);
& else writeln(c);
5、进一步判断它们构的是锐角三角形、直角三角形还是钝角三角形,并&&&&&&&&&&&& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& If
(测试数据:①1、2、3;②3、4、5;③)4、4、7;④5、5、5;答案:①No;②6.00;③6.78;④锐角、等边、面积10.83
& a,b,c,t,s,d,ja,jb,jc:
& writeln('input three number for a,b,c:');
& readln(a,b,c);
& if a&b then begin t:=a; a:=b; b:=t;
& if a&c then begin t:=a; a:=c; c:=t;
& if (a&b+c) then
&&& if (a*a&b*b+c*c) then writeln('rui jiao
san jiao xing.')
&&& else if(a*a=b*b+c*c) then writeln('zhi jiao
san jiao xing.')
&&& else writeln('dun jiao san jiao xing.');
&&& if (a=b)and(b=c)and(c=a) then writeln('deng
bian san jiao xing.')
&&& else if
((a=b)and(b&&c))or((a=c)and(c&&b))or((b=c)and(c&&a)) then
&&&&& writeln('deng yao san jiao xing.')
&&& else if (a*a&&b*b+c*c) then
writeln('yi ban san jiao xing.');
&&& d:=(a+b+c)/2;& s:=sqrt(d*(d-a)*(d-b)*(d-c));& writeln('s=',s:0:2);
& else writeln('NO!');
6、111.5&&&& (答案:47)
s:=11;& i:=0;
& while s&22 do
&&& begin&
s:=s*(1.015);& inc(i);&
& writeln(i);
7、Fibonacci0101123550&&&&&&&&&
(答案:)
& x:=0; y:=1; write(x:20:0,y:20:0);
& for i:=3 to 50 do
z:=x+y;& write(z:20:0);& x:=y;&
8、n224262n2&1500&&&&&&&&&&&&&&&&&&
(答案:18)
& while s&1500 do
&&& begin&
inc(n,2);& inc(s,n*n);&
& writeln(n-2);
9、(答案:461)
program e2_29;
i,j,k,ans:
& for k:=1 to
&&& for j:=1 to
&&&&& for i:=1
&&&&&&& if
(k*5+j*2+i)=100 then inc(ans);
& writeln(ans);
10、mn0&n&m1989m1989n
(算法:这类数字很大且有效数字位数很多(超出最多有效位数extended数据类型有效数字18位)的数字问题,一定要另辟蹊径寻找突破口,注意到此题只要求最后三位数字相同,则我最多保留最后四位有效数字即可进行判断。还请记住这样一个事实,如1989×1989=3956121,3956121×1989=,最后四位数字是“4669”,而我把3956121取其最后的四位数“6121”与1989相乘即6121×9,最后四位数字也是“4669”,没有破坏最后四位有效数字的值,因此可以通过这种方法来编写此程序。)
&&&&&&&&&&&&& m51&&&&& n1
& m,n,i,j:
& x,y,a,b:
& for m:=2 to 60 do
&&& for n:=1 to m-1 do
&&&&& x:=1; y:=1;
&&&&& for i:=1 to m do begin x:=x mod 10000;
x:=x*1989; a:=x mod 1000;
&&&&& for j:=1 to n do begin y:=y mod 10000;
y:=y*1989; b:=y mod 1000;
&&&&& if a=b then writeln('m=',m,'& n=',n);
& count,x:
& writeln('input integer number(0--end):');
&&& read(x);
&&& if x&0 then inc(count);
& until(x=0);
& writeln('count=',count);
12、0111&&&&&&&&&&&&&&&&&&
(1)502105
12.05E+0000&&&&&&&&&&& 22.19E+0000
(1/s)&1E-5;
program e2_35;
& e:=1;& count:=0;
inc(count);& s:=1;
&&& for i:=1 to
count do s:=s*i;
&&& e:=e+1/s;
& writeln(e);
13、100&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
& a,b,c,i:
& writeln('shu ru p3(0~2),p5(0~4),p7(0~6) de
wei shu:');
& readln(a,b,c);
& for i:=100 downto 1 do
&&& if (i mod 3=a)and(i mod 5=b)and(i mod 7=c)
then writeln(i);
& if i=1 then writeln('No answer!');
14、N1212312122&&&&&&&&&&&
55253541000
&&&&&& 1000 div 51000 div 521000 div 531000 div 54249
program I_11;
& for i:=1 to 1000 do
&&&&& s:=s*i;
&&&&& if (s mod 1000 =0) then& begin s:=s div 1000; d:=d+3;
&&&&& if (s mod 100 = 0) then& begin s:=s div 100;& d:=d+2;
&&&&& if (s mod 10 = 0)& then&
begin s:=s div 10;&& d:=d+1;
&&&&& s:=s mod 10000;
& write(d);
15、26&&&&&&&&&&&&&&&&&&&&&&&& A&&&&&&&&&&&&&&&&&&&&&&&&&
& ABCBA&&&&&
program e2_40;
& for i:=1 to
&&&&& for j:=1
to 26-i do write(' ');
&&&&& for j:=1
to i do write(chr(64+j));
j:=i-1 downto 1 do write(chr(64+j));
1、1010&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
program e1;
const n=10;
& a:array[1..10]
& writeln('input ',n,' integer number:');
& for i:=1 to n do read(a[i]);
& for i:=1 to n-1 do
&&& for j:=1 to n-i do
&&&&& if a[j]&a[j+1] then begin& t:=a[j]; a[j]:=a[j+1]; a[j+1]:=t;&
& for i:=1 to n do write(a[i]:5);
2、&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
3、110023100&&&&&&&&&&&&&&&&&&&
(提示:对于任何一个编号,例如8,它的因子只有1、2、4、8,并且成对出现,当此数的因子数为偶数个时将被关上,当此数的因子数为奇数个时才会被打开。考虑到因子成对出现的情况,因此只有平方数的因子是奇数个的,所以门被打开的只能是平方数的房间,如1,4等)
4、&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
15n&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
6、LETA26LET
9、nn&20255
what is local bus?
Name some local bus.
Local bus is high speed I/O bus close to the processor.
1、n&&&&&&&&&&&&&&&&&&&&&
program e4_2;
a:array[1..10]
& writeln('input
ten integer number:');
& for i:=1 to
10 do read(a[i]);
& t:=a[1];
& for i:=2 to
10 do if a[i]&t then t:=a[i];
& for i:=1 to
&&& if a[i]=t
then& begin& writeln('the min number is ',i,'th');& a[i]:=a[1]; a[1]:=t;&
& for i:=1 to
10 do write(a[i]:8);
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&& (测试数据:这里a组数据共8个:1 1 3 6 6 7 9 10; b组数据共5个:0 1 2 3 4)
program e4_3;
& a:array[1..8]
& b:array[1..5]
c:array[1..13]
i,j,k,m,n:
& writeln('input
8 integer number of square arrayA:');
& for i:=1 to 8
do read(a[i]);
writeln('input 5 integer number of square arrayB:');
& for i:=1 to 5
do read(b[i]);
& j:=1;& k:=1;&
m:=a[j];& n:=b[k];
& for i:=1 to
&&&&& if m&n
&&&&&&& begin
c[i]:=m; inc(j); m:=a[j];
&&&&&&&&& if
j=9 then m:=
&&&&&&& end
&&&&& else
&&&&&&& begin
c[i]:=n; inc(k); n:=b[k];
&&&&&&&&& if
k=6 then n:=
& for i:=1 to
13 do write(c[i]:4);
3、&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&& (测试数据:有序数组为1 1 3 6 6 7 9 10;&&&&&& 待插入数为5)
program e4_4;
& a:array[1..9]
writeln('input 8 integer square number:');
& for i:=1 to 8
do read(a[i]);
writeln('input a integer number to insert:');
& readln(n);
flag:=& i:=1;
a[i]&n then flag:=true else inc(i);
& for j:=9
downto i+1 do a[j]:=a[j-1];
& a[i]:=n;
& for i:=1 to 9
do write(a[i]:4);
4、NA&&&&&&&&&&&&&&&&& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&& (测试数据:数列为1 3 5 3 7 5 3 1;&&& 答案:1& 3&
program e4_5;
& a:array[1..8]
writeln('input 8 integer number:');
& for i:=1 to 8
do read(a[i]);
& for i:=2 to 8
&&& for j:=1 to
i-1 do if a[i]=a[j] then a[i]:=
& for i:=1 to 8
a[i]&&maxint then write(a[i]:4);
5、NRT1T2TN
6、NO FIND &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&& &&& &&&&&&&&&&&&&&&&& 2136
& i,j,x,y:
& a:array[1..5,1..5] of
&& writeln('input number(5*5):');
& for i:=1 to 5 do
&&& for j:=1 to 5 do
&&&&& read(a[i,j]);
& for i:=1 to 5 do
&&& minx:=a[i,1];& x:=i;&
&&& for j:=1 to 5 do
&&&&& if a[i,j]&minx then
begin minx:=a[i,j];& y:=j;&
&&& for j:=1 to 5 do
&&&&& if a[j,y]&minx then
&&& if j=5 then writeln('the
number is ',minx,'[',x,']','[',y,']');
1、1357911
2、N9999997297297291261261261212122N2200
3、HanoinABCACB
5、8819Gauss185092
6、&&&&&&&&&&&
2、NMN*M01CC9MNo find
&&&&&& C3N65M4865483210
&&&&&&&&&&&&& & C8N125No find
1.e&&&&&&&&&&&&&&&&&&&&&&&&&&&&
enn12e130000
1131153&&&&&&& 答案:①16687 ②8
& a,b,c,n:
n:=3;& a:=1;& b:=1;
&& &c:=(n-2)*a+(n-1)*b;& a:=b;&
b:=c;& inc(n);
& until c&30000;
& writeln('maxe=',a,'& count=',n-2);
2.5&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
& for i:=1 to 1000 do begin& n:=i;&
s:=s+1/(n*(n+1));&
& writeln(s:0:5);
3.&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
(1)F502F0F1F50
(答案:①212101&&&&&&&& ②97262
& i,a,b,c,d,s:
a:=1;& b:=1;& c:=1;&
& for i:=3 to 50 do
& begin d:=a-2*b+c;& s:=s+d;&
a:=b;& b:=c;& c:=d;&
write(d:8);&
writeln('s=',s);
4.AB716699ABAB&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
A563&&&& B1273
& a,x,s,mina,minb:
s:=716699;&
x:=trunc(sqrt(716699));
& for a:=1 to x do
&&& if (716699 mod a=0)and(a+(716699 div
a)&s) then
&&& begin&
s:=a+(716699 div a);&
mina:=a;& minb:=(716699 div
& writeln('A=',mina,'& B=',minb);
5.52255170012&&&&&&&&&&&&&&&&&
(答案:①625&&&&&&&&&&&&&&&&& ②7
& i,count:
& for i:=1 to 9 do
&&& if (i*i-i) mod 10=0 then inc(count);
& for i:=10 to 99 do
&&& if (i*i-i) mod 100=0 then inc(count);
& for i:=100 to 700 do
&&& if (i*i-i) mod 1000=0 then begin
inc(count);& write(i:8);&
writeln('count=',count);
6.051122611211511&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&& 1258&&&&&&&&&& 21826
program e1;
& i,j,k,a,b,c,x,n,count,s:
& aa:array[1..5]
& for i:=111 to 316 do
&&& a:=i div 100;& b:=(i div 10) mod 10;& c:=i mod 10;
((a&&0)and(b&&0)and(c&&0)) then
&&&&& x:=i*i;
&&&&& aa[1]:=x div 10000;
&&&&& aa[2]:=(x div 1000) mod 10;
&&&&& aa[3]:=(x div 100)& mod 10;
&&&&& aa[4]:=(x div 10)&& mod 10;
&&&&& aa[5]:=x mod 10;
&&&&& for j:=1 to 3 do
&&&&& begin
&&&&&&& n:=1;
&&&&&&& for k:=j+1 to 5 do
&&&&&&&&& if aa[j]=aa[k] then n:=n+1;
&&&&&&& if n&2 then begin writeln(i:8,x:8);
s:=s+i; count:=count+1;&
&&& if count=10
& writeln(s:8);
7.a0b7744882774412&&&&&&&&&&&&&&&&&&&&&&&&&&&
(分析:最小四位数1000是31.6的平方,最大的四位数9999是99.9的平方)
(答案:①1&&&&&&&&&& ②7744
& i,x,count,s:
count:=0;& s:=0;
& for i:=32 to 99 do
&&& x:=i*i;
&&& if ((x div 1000)=((x div 100) mod
10))and(((x div 10) mod 10)=(x mod 10)) then
&&& begin&
inc(count);& s:=s+x;&
& writeln('count=',count,'& s=',s);
8.3242525121130123&&&&&&&&
(分析:设a2+b2=c2,且a&b,这样可以控制出现重复弦数)
(答案:①4&&&&&&&&&& ②122&&&&&&&&&&&&&& ③130
& i,j,k,x,count:
& for i:=121 to 130 do
&&& x:=trunc(sqrt(i*i/2));
&&& for j:=1&
&&&&& k:=trunc(sqrt(i*i-j*j));
&&&&& if (i*i=j*j+k*k) then
&&&&& begin inc(count);& writeln(i,'*',i,'=',j,'*',j,'+',k,'*',k);
& writeln('count=',count);
9.aX2Y2Z2512bXYZcXXYZ&&&&&&& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
X22&&&&&&&&&&&&& Y31&&&&&&& Z34
program e1;
& x,y,z,n,m,maxs,minx,xx,yy,zz:
& n:=trunc(sqrt(51*51/3));& m:=trunc(sqrt((51*51-1*1)/2));
& maxs:=0; minx:=51;
& for x:=n downto 1 do
&&& for y:=x to m do
&&&&& z:=trunc(sqrt(51*51-x*x-y*y));
&&&&& if (z&y)and(x*x+y*y+z*z=51*51) then
&&&&&&& if ((x+y+z&maxs)or((x+y+z)=maxs))
&&&&&&& begin
&&&&&&&&& maxs:=x+y+z; xx:=x; yy:=y; zz:=z;
& writeln('x=',xx,'& y=',yy,'&
10.104a=0.1x=1.0&&&&&&&&&&&&&&&&&&&
a:=0.1;& x:=1.0;
y:=(exp(a*x)-exp(-a*x))/2*sin(x+a)+a*ln((x+a)/2);
& writeln(y:0:4);
11.A&B&C3ABC1566560&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
A2B2C2A2B2
(答案:①2&&&&&&&&&& ②a20&&&& b15&&&&&&& c12
& a,b,c,count,mins,mina,minb,minc:
count:=0;& mins:=100;
& for c:=1 to 33 do
&&& for b:=c+1 to 49 do
&&&&& for a:=b+1 to 97 do
&&&&&&& if
(a*a*b*b=c*c*(a*a+b*b))and(a+b+c&100) then
&&&&&&& begin
&&&&&&&&& inc(count);
&&&&&&&&& if (a+b+c&mins) then begin
mins:=a+b+c;& mina:=a;& minb:=b;&
& writeln('count=',count,'& a=',mina,'&
b=',minb,'& c=',minc);
12.abcdeabcde=dcbaa0e01abcdabcde&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
1089&&&&&&&& 9
program e1;
& a,b,c,d,e,x,y:
& for a:=1 to 9 do
&&& for b:=0 to 9 do
&&&&& for c:=0 to 9 do
&&&&&&& for d:=0 to 9 do
&&&& &&&&&for e:=2 to 9 do
&&&&&&&&& begin
&&&&&&&&&&& x:=a*1000+b*100+c*10+d;& y:=d*1000+c*100+b*10+a;
&&&&&&&&&&& if (x*e=y) then begin& writeln(x:8,e:8);&&
13.01104&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
x:=0.0001;
&&& if (abs(x*x*x-3*x+1)&1e-4) then
writeln(x:0:4);
&&& x:=x+0.0001;
& until x&=1;
14.M80M1MxMy=2x+1z=3x+1M&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
(1)50250
1172&&&&&&&&&& 23853
& i,j,k,t,p,n:
& a:array[1..100]
a[p]:=1;& n:=1;
& while p&50 do
&&& a[n+1]:=2*a[p]+1;
&&& a[n+2]:=3*a[p]+1;
&&& n:=n+2;
&&& for i:=1 to n-1 do
&&&&& for j:=1 to n-i do
&&&&&&& if a[j]&a[j+1] then
&&&&&&& begin&
t:=a[j];& a[j]:=a[j+1];& a[j+1]:=t;&
&&& p:=p+1;
& writeln(a[p]:8);
15.nABBn3AAAAABABABAABAB51n152n108A
AB01A0B2 n102 n1
11597&&&&&&&& 236
& n,m,s,i,j,count:
& a:array[1..100]
& writeln('input n:');
& readln(n);
& for i:=1 to n do s:=s*2;
& for i:=0 to s-1 do
&&& for j:=1 to n do
&&&&& a[j]:=m mod 2;
&&&&& m:=m div 2;
&&& flag:=
&&& for j:=1 to n-1 do
&&&&& if (a[j]=1)and(a[j+1]=1) then
&&&&& begin flag:=&&
&&& if flag=true then count:=count+1;
& writeln(count);
& n,m,s,i,j,count,na:
& a:array[1..100]
& writeln('input n:');
& readln(n);
& for i:=1 to n do s:=s*2;
& for i:=0 to s-1 do
&&& for j:=1 to n do
&&&&& a[j]:=m mod 2;
&&&&& m:=m div 2;
&&& flag:=
&&& for j:=1 to n-1 do
&&&&& if (a[j]=1)and(a[j+1]=1) then
&&&&& begin flag:=&&
&&& na:=0;
&&& for j:=1 to n do
&&&&& if a[j]=0 then
&&&&&&& na:=na+1;
&&& if (flag=true)and(na=8) then
count:=count+1;
& writeln(count);
16.1nmm&nmn=20m48125
(提示:集合的元素不能重复,此题可分3~9个元素类别集合讨论,下面给出第2问的源程序)
(答案:①1674&&&&&&&&&&&& ②488
program e1;
& a,b,c,d,e,f,g,count:
& for a:=1 to trunc(m/5) do
&&& for b:=a+1 to trunc((m-1)/4) do
&&&&& for c:=b+1 to trunc((m-1-2)/3) do
&&&&&&& for d:=c+1 to trunc((m-1-2-3)/2)
&&&&&&&&& for e:=d+1 to 20 do
&&&&&&&&&&& if (a+b+c+d+e=m) then inc(count);
& writeln('count5=',count);
1、1234564950&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
s:=0;& x:=0;
& for i:=1 to 25 do begin x:=x+2;& s:=s+x*(x-1);
& writeln(s);
2、726983521722699833552152935&&&&&&&&&&&&&&&&&&&&& &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
& a:array[1..9]
& i,j,k,n:
& writeln('input 9 number');
& for i:=1 to 9 do read(a[i]);
& for i:=2 to 9-1 do
((a[i]&a[i-1])and(a[i]&a[i+1]))or((a[i]&a[i-1])and(a[i]&a[i+1]))
&&&&& n:=n+1;
& writeln(n:8);
3、199123&&&&&&&&&&&&&&&&&&&&&&&&&&&&
192384576219438657273546819327654981
& a:array[0..9]
& i,g,s,b,k,t:
& for i:=100 to 333 do
&&& for k:=0 to 9 do a[k]:=0;
&&& g:=k mod 10;& s:=(k div 10) mod 10;& b:=k div 100;&
a[g]:=1;& a[s]:=1;& a[b]:=1;
&&& k:=2*i;
&&& g:=k mod 10;& s:=(k div 10) mod 10;& b:=k div 100;&
a[g]:=1;& a[s]:=1;& a[b]:=1;
&&& k:=3*i;
&&& g:=k mod 10;& s:=(k div 10) mod 10;& b:=k div 100;&
a[g]:=1;& a[s]:=1;& a[b]:=1;
&&& for k:=1 to 9 do
t:=t+a[k];
&&& if t=9 then
writeln(i:4,i*2:4,i*3:4);
4、abcabccba5121122115&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
(分析:注意此题中处理回文数判断的方法和处理数组高精度加法的方法)
& a,b:array[1..20]
& &write('abc=');&
readln(x);
& for i:=1 to 15 do a[i]:=0;
& a[1]:=x mod 10;& a[2]:=(x div 10) mod 10;& a[3]:=x div 100;
(hw=false)and(m&15) do
&&& for i:=1 to m do b[i]:=a[m-i+1];
&&& while (i&=m)and(a[i]=b[i]) do i:=i+1;
&&& if i&m then hw:=true
&&&&& begin
&&&&&&& for i:=m downto 1 do write(a[i]);
&&&&&&& write('+');
&&&&&&& for i:=m downto 1 do write(b[i]);
&&&&&&& write('=');
&&&&&&& for i:=1 to m do
&&&&&&& begin a[i]:=a[i]+b[i];& a[i+1]:=a[i+1]+a[i] div 10;& a[i]:=a[i] mod 10;
&&&&&&& if a[m+1]&0 then m:=m+1;
&&&&&&& for i:=m downto 1 do write(a[i]);
& if hw then writeln('success!') else
writeln('Fail!');
1&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& 2
const n=5;
& i,j,min,x,y:
& a:array[1..n,1..n]
writeln('input ',n,'*',n,' integer number:');
& for i:=1 to n do
&&& for j:=1 to n do
&&&&& read(a[i,j]);
& for i:=1 to n do
&&& min:=a[i,1];& x:=i;&
&&& for j:=1 to n do
&&&&& if a[i,j]&min then begin
min:=a[i,j];& y:=j;&
&&& for j:=1 to n do
&&&&& if a[j,y]&a[x,y]
&&& if (j=n)and(a[x,y]&a[n,y]) then begin
write(a[x,y],'(',x,',',y,')');&
& if flag=false then writeln('No find!');
6、617411116174764114676174
program e18;
& a:array[1..4]
& i,j,d,k:
& writeln('input a si wei
& read(d);
& if (d mod 1111&&0)
&&& while d&&6174 do
&&&&& begin
&&&&&&& a[1]:=d div 1000;& a[2]:=(d mod 1000) div 100;
&&&&&&& a[3]:=(d mod 100) div
10;& a[4]:=d mod 10;
&&&&&&& for i:=1 to 4 do
&&&&&&&&& for j:=i+1 to 4 do
&&&&&&&&&&& if a[i]&a[j]
&&&&&&&&&&&&& begin
&&&&&&&&&&&&&&& k:=a[i];& a[i]:=a[j];&
&&&&&&&&&&&&&
d:=1000*a[1]+100*a[2]+10*a[3]+a[4]-1000*a[4]-100*a[3]-10*a[2]-a[1];
writeln(1000*a[1]+100*a[2]+10*a[3]+a[4],'-',1000*a[4]+100*a[3]+10*a[2]+a[1],'=',d);
1、输入10个正整数,计算它们的和,平方和。&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
program I_1;
& i,s,d,p:
& writeln('input ten positive number:');
& for i:=1 to 10 do
&&&&& read(d);
&&&&& s:=s+d;&
& write(s:8,p:8);
2、统计1――999中能被3整除,且至少有一位数字是5的数。&&&&&&&&&&&&&&&&&&&&&&
(答案:91)
program I_4;
& for i:=1 to 999 do
&&&&& if(i mod 3 = 0) and ((i
mod 10 = 5) or ((i div 10) mod 10 =5) or ((i div 100)=5))
&&& &&then begin write(i:8);& s:=s+1;
&& write(s:8);
3、从键盘输入一个20~50之间的整数,统计出边长为整数,周长为输入数的不等边三角形的个数。
27&&&&&&&&&& 18)&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
program I_9;
& x,y,z,k,s:
writeln('input a integer number(20&n&50):');& readln(s);
& for x:=1 to (s div 3) do
&&& for y:=x to ((s-x) div 2) do
&&&&& begin
&&&&&&& z:=s-x-y;
&&&&&&& if (x+y)&z then
&&&&&&&&& begin
&&&&&&&&&&& writeln(x:4,y:4,z:4);& k:=k+1;
& if (s mod 3)=0 then k:=k-1;
& write(k);
4、一个整数的立方可以表示为两个整数的平方差,如19853=19711052-19691202。
编程:输入一个整数N,自动将其写成N3=X2-Y2。&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&& (提示:N3=X2-Y2=(X+Y)(X-Y),所以必有(X-Y)=N,(X+Y)=N2。)
&&& (测试数据:N=2004; 答案20043=20090102-20070062)
program I_13;
&& read(n);
& for y:=1 to maxlongint do
&&& x:=y+n;
&&& if (n*n=x+y) then begin
writeln(n,'^3=',x,'^2-',y,'^2');
5、任意给定平面上三个点A(X1,Y1),B(X2,Y2),C(X3,Y3),试判断这三个点能否构成三角形。能则求出它的面积。&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
program I_16;
x1,y1,x2,y2,x3,y3,a,b,c,d,e,k:
&& write('input X1,Y1 X2,Y2 X3,Y3:');
& read(x1,y1,x2,y2,x3,y3);
a:=sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
b:=sqrt((x2-x3)*(x2-x3)+(y2-y3)*(y2-y3));
c:=sqrt((x3-x1)*(x3-x1)+(y3-y1)*(y3-y1));
& if a&b then begin
k:=a;& a:=b;& b:=k;
& if a&c then begin
k:=a;& a:=c;& c:=k;
& if a&b+c then
&&& begin d:=(a+b+c)/2;& e:=sqrt(d*(d-a)*(d-b)*(d-c));& write('area=',e:8:3); end
& else write('bu neng gou
cheng san jiao xing');
6、59=32+52+52=12+32+72,即59可以分别等于两组不同的自然数(每组各3个数)的二次幂之和,请找出10个最小的具有这种特性的数。&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
(分析:注意此程序中Goto语句的用法)
(答案:(27、1、1、5、3、3、3)(33、1、4、4、2、2、5)(38、1、1、6、2、3、5)等)
m,a,b,c,n,a1,b1,c1,count:
&& count:=0;&&
&&&&& inc(m);
&&&&& if count&=10 then
&&&&& n:=0;
&&&&& for a:=1 to
trunc(sqrt(m/3)) do
&&&&&&& for b:=a to
trunc(sqrt((m-a*a)/2)) do
&&&&&&&&& for c:=b to
trunc(sqrt(m-a*a-b*b)) do
&&&&&&&&&&& if
(a*a+b*b+c*c&m) then goto 1
&&&&&&&&&&& else if (a*a+b*b+c*c=m)
&&&&&&&&&&&&& begin
&&&&&&&&&&&&&&& inc(n);
&&&&&&&&&&&&&&& if n=1 then
begin a1:=a;& b1:=b;& c1:=c;&
&&&&&&&&&&&&&&& else if n=2
&&&&&&&&&&&&&&&&& begin
&&&&&&&&&&&&&&&&&&&
inc(count);
&&&&&&&&&&&&&&&&&&&
writeln(m:4,a1:4,b1:4,c1:4,a:4,b:4,c:4);
&&&&&&&&&&&&&&&&&&& goto 1;
&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&
&&& until count&=10;
7、每一个素数的倒数都可以化为一个循环小数,例如:1/7可以化为0.(142857),1/13可化为
&&& 0.(076923)。编程把17的倒数化为循环小数。&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&& (答案:0.(7647))
program I_25;
& a,b,c,i,j,k:
& e:array[1..200]
& a:=1;& b:=17;
& for i:=1 to 200 do
&&&&& c:=a*10
&&&&& a:=10*
&&&&& e[i]:=c;
& for i:=1 to 200 do
&&& for j:=i+1 to 200 do
&&&&& if (e[i]=e[j]) then
&&&&&&& begin
&&&&&&&&& yes:=
&&&&&&&&& for k:=1 to j-i do
&&&&&&&&&&& if
e[i]&&e[j] then yes:=
&&&&&&&&& if yes=true then
&&&&&&&&&&& begin
&&&&&&&&&&&&& for k:=i to j-1
&&&&&&&&&&&&&&&&& write(e[k]);
&&&&&&&&&&&&&
&& &&&&&&&&&
8、求数列1、5、17、53、161、。。。前20项的和。(提示:
An=2+3×An-1)&&&&&&&&&&&&
(答案:)
program I_29;
& an,am,s:
&& am:=1;&
s:=1;& write(am:20:0);
& for i:=2 to 20 do
&&&&& an:=am*3+2;& s:=s+&
am:=& write(am:20:0);
&& write('totle:',s:0:0);
9、编一程序实现:由键盘输入年月日后,计算机能打印出该日期是星期几。&&&&&&&&&&&
(提示:首先算出这一年的元旦是星期几。算法如下:①输入年份year;②根据下面公式计算:
d=year+((year-1)div 4)-((year-1)div 100)+((year-1)div 400)
& d=d mod 7;那么d=0则表示为Sunday、d=1则表示为Monday、……依此类推。
& ③输入月份month和日期day,计算该日期是这个年份中的第几天(x);
④计算(x+d-1)mod 7,得到星期几。
注意月份中的二月是28天还是29天,需看年份是否为闰年,闰年定义为:年份能被400整除的是闰年,或者年份能被4整除但不能被100整除的是闰年,其它年份均不为闰年。闰年的计算方法如下:若((year mod 4=0)and(year mod 100&&0))or(year mod 400=0)则为闰年。)
& yd:set of
1..12=[1,3,5,7,8,10,12];& {}
& yx:set of
1..12=[4,6,9,11];& {}
& a:array[1..12] of
integer=(0,31,59,90,120,151,181,212,243,273,304,334);
{1231,28,31,30,31,30,31,31,30,31,30,31i-1}
& s:array[0..6] of string=
('Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday');
& year,m,day,d,x:
& writeln('input year:');& readln(year);
& if (year mod 400=0)or((year
mod 4=0)and(year mod 100&&0)) then r:=true else r:=
&&& writeln('input
month:');& readln(m);
& until (m in [1..12]);
&&& writeln('input
day:');& readln(day);
&&& if (m in yd)and(day in
[1..31]) then flag:=true
&&& else if (m in yx)and(day
in [1..30]) then flag:=true
&&& else if
(m=2)and(r=true)and(day in [1..29]) then flag:=true
&&& else if
(m=2)and(r=false)and(day in [1..28]) then flag:=
& until flag=
& d:=year+((year-1) div
4)-((year-1) div 100)+((year-1) div 400);&
& d:=d mod 7;& {}
& x:=a[m]+& {x}
& if (m&2)and(r=true) then
x:=x+1;& {}
& x:=(x-1+d) mod 7;& {x-1}
& writeln('Today is ',s[x]);
10、编程实现:键盘输入年月,计算机能打印出该月的月历,如输入2004、6,则输出:
& yd:set of
1..12=[1,3,5,7,8,10,12];& {}
& yx:set of
1..12=[4,6,9,11];& {}
& a:array[1..12] of
integer=(0,31,59,90,120,151,181,212,243,273,304,334);
& year,m,day,d,x,i:
& writeln('input year:');& readln(year);
& if (year mod 400=0)or((year
mod 4=0)and(year mod 100&&0)) then r:=true else r:=
&& &writeln('input month:');& readln(m);
& until (m in [1..12]);
& if m in yd then day:=31
& else if m in yx then day:=30
& else if (m=2)and(r=true)
then day:=29
& else day:=28;
& d:=year+((year-1) div
4)-((year-1) div 100)+((year-1) div 400);&
& d:=d mod 7;& {}
& x:=a[m];& {xm-1}
& if (m&2)and(r=true) then
x:=x+1;& {}
& x:=(x-1+d) mod 7;& {x-1x}
writeln('SUM':4,'MON':4,'TUE':4,'WED':4,'THU':4,'FRI':4,'SAT':4);
& for i:=0 to x do
write('':4);& {}
& for i:=1 to day do
&&& if (i+x) mod 7=0 then
&&& write(i:4);
11、写出两个1,然后在它们中间插入2,成121;下一步是在上面数中每两个相邻的和数为3的数之间插入3,成为13231;再下一步又在上面数中任意两个相邻的和数为4的数中插入4,成为1432341;由键盘输入N,求出用上面方式构造出来的序列,其最后插入的数是N。假设这个序列不超过1000项,给出N=9时的运算结果。
12、把所有3的方幂及不相等的3的方幂的和排列成递增序列:1、3、4、9、10、12、13、。。。这个序列的第300项是多少?(6840)
13、两个1,两个2,两个3,这6个数可组成6位数312132。这个数有如下特点:两个1之间隔一位,两个2之间隔两位,两个3之间隔3位。231213也是一个符合条件的6位数。用数字1、2、3、4、5、6、7、8各两个,可以组成类似的16位数,请找出10个这样的16位数。
14、对于所有的数字不完全相同的三位数(不够三位数的前面补零也当成是三位数)。我们定出如下计算规则:用这个三位数的三个数字可组成的最大数减去可组成的最小数,则得到一个新的三位数;对新的三位数还按照上面的规则继续算下去,最后会发现,我们陷入一个死循环里,或者说是跌入了一个数的黑洞里。用具体例子说明。比如从三位数123开始,计算如下321-123=198;981-189=792;972-279=693;963-369=594;954-459=495;954-459=495;…. 从其他的任何三位数开始,最终也都会停止在495,我们把495叫做三位数的黑洞。类似地也存在着一个由一个数组成的四位数的黑洞。请编程序把它找出来。(6174)
(答案:与前面的数学黑洞问题相似,故此程序略)
15、11,323,74947,这样的数叫回文数,它们的特点是最高位、最低位的数相同,次高位,次低位相同,….其中11是个更特殊的回文数,它的平方121、立方1331也是回文数。这是最小的一个具有这种性质的回文数。请编程,找出三次方小于的具有上述性质的所有回文数。
(答案:1、2、11、101、111)&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
function huiwen(x:longint):
&&& a,b:array[1..100] of
&&& m,n,y:
&&& if x&1 then begin
huiwen:=&&
&&& for m:=1 to 100 do a[m]:=0;
&&& y:=x;& m:=0;
&&& repeat
&&&&& inc(m);& a[m]:=y mod 10;& y:=y div 10;
&&& until y=0;
&&& for n:=1 to m do
b[n]:=a[m+1-n];
(n&=m)and(a[n]=b[n]) do inc(n);
&&& if n=m+1 then huiwen:=true
else huiwen:=
{=============main=============}
& for i:=1 to 999 do
(huiwen(i)=true)and(huiwen(i*i)=true)and(huiwen(i*i*i)=true) then write(i:8);
16、请编写程序,以简单算术表达式作为输入,构造对应的无括号表达式(无括号表达式的运算符写在运算对象的后面)。如:输入:A*(B-C)+D,应输出ABC-*D+;输入:(A+B)/C-D*E,应输出AB+C/DE*-。
17、键盘输入一个只含加、减、乘、除四则运算和括号的数学表达式,编程求出该表达式的值并输出结果。
18、一只公鸡值5元,一只母鸡值3元,3只小鸡值1元,现用一百元要买一百只鸡,问有什么方案?
02575418788118112484&&&&&&&&&&&&&&&&&&&&&
& for i:=1 to 20 do
&&& for j:=1 to 33 do
&&&&& k:=100-i-j;
&&&&& if (k mod
3=0)and(5*i+3*j+(k div 3)=100) then
&&&&&&& writeln(i:8,j:8,k:8);
1、某超市为了促销,规定:购物不足50元的按原价付款,超过50不足100的超过部分按九折付款,超过100元的,超过部分按八折付款。编一程序完成超市的自动计费的工作。&&&&&&&&&&
& n,money:
writeln('input the money number:');&
readln(n);& money:=0;
& if n&=50 then money:=n
& else if (n&50)and(n&=100) then
money:=50+(n-50)*0.9
& else money:=50+(100-50)*0.9+(n-100)*0.8;
& writeln('money=',money:0:2);
2、75996798&&&&&&&&&&&&&
753991674982
& a:array[1..4]
& for i:=1 to 4 do read(a[i]);
& for i:=1 to 4 do
&&& m:=1;& write(a[i],'--');
&&& for j:=1 to 4 do
&&&&& if a[j]&a[i] then
&&& write(m,'& ');
3、&maxlongint&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&& 答案:38
writeln('input n:');& readln(n);
& while n&0 do
& begin& s:=s+(n mod 10);& n:=n div 10;&
& writeln(s);
4、19812&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&& &&& (分析:假定这三兄弟均在1900年后出生)
&&&&&& 1981431938371944311950
& for a:=1 to 100 do
&&& for b:=a+1 to 100 do
&&&&& for c:=b+1 to 100 do
&&&&&&& if (c-b=b-a) then
&&&&&&&&& if((a-1)=2*(10+((1981-a)mod
10)+(((1981-a)div 10)mod 10))) then
&&&&&&&&&&& if ((b-1)=2*(10+((1981-b)mod
10)+(((1981-b)div 10)mod 10))) then
&&&&&&&&&&&&& if ((c-1)=2*(10+((1981-c)mod
10)+(((1981-c)div 10)mod 10))) then
&&&&&&&&&&&&&&& writeln(a:4,b:4,c:4);
5、19933&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
答案:361、529、784
i,j,k,g,s,b,t,n:
a:array[0..9]
for i:=11 to 31 do
for j:=i to 31 do
for k:=j to 31 do
&&&&&&& for n:=0 to 9 do a[n]:=0;
&&&&&&& g:=i*i mod 10;& s:=(i*i div 10) mod 10;& b:=i*i div 100;& a[g]:=1;&
a[s]:=1;& a[b]:=1;
&&&&&&& g:=j*j mod 10;& s:=(j*j div 10) mod 10;& b:=j*j div 100;& a[g]:=1;&
a[s]:=1;& a[b]:=1;
&&&&&&& g:=k*k mod 10;& s:=(k*k div 10) mod 10;& b:=k*k div 100;& a[g]:=1;&
a[s]:=1;& a[b]:=1;
&&&&&&& t:=0;
&&&&&&& for n:=1 to 9 do t:=t+a[n];
&&&&&&& if t=9 then writeln(i*i:8,j*j:8,k*k:8);
&&&&&& (备注:除第1题写出判断素数子函数外,其余各题的判断素数子函数均相同,故省略,但同学们在编程的时候不能省,否则程序将无法运行。)
1、MNM&N&&&&&&&&&&&&&&&& If
function prime(x:longint):
&&& y:=trunc(sqrt(x));
&&& flag:=
&&& for j:=2 to y do
&&&&& if (x mod j = 0) then
begin flag:=
&&& if x&2 then
&&& if flag=true then
prime:=true else prime:=
&& writeln('input two integer number for m and n
(m&n):');& readln(m,n);
& for i:=m to n do
&&& if prime(i)=true then
write(i:4);
2、NN4422633835981779&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
4、2&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& &&&&&& &&&&&&
&&&&&& (素数算法:只需判断到这个数开平方的整数为止即可,如判断25,则只需判断从2~5即可)
&&& (测试数据:; 答案:Yes)(源程序略)
5、13&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&& (答案:11、13、17、31、37、71、73、79、97)(源程序略)
6、&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
7、22300&&&&&&&&&&&&&&&&&&&&&&&&&&
(答案:①281283&&&&&&&&&&& ②19)(源程序略)
8、12315235299&&&&&&&&&&&
(答案:①48&&&&&&&&&&&&&&&& ②128044)(源程序略)
9、2n1n121&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
(答案:①7&&&&&&&&&&&&&&&&&& ②19
program e6_9;
& i,count:
& for i:=1 to 21 do
&&& if prime(trunc(exp(i*ln(2))-1))=true then
begin inc(count);& write(i:8);&
writeln('count=',count);
10、pp2391009999&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
(答案:①30&&&&&&&&& ②7393
program e6_9;
& i,count:
& for i:=100 to 999 do
&&& if (prime(i))and(prime(i div
10))and(prime(i div 100)) then inc(count);
& for i:=1000 to 9999 do
&&& if (prime(i))and(prime(i div
10))and(prime(i div 100))and(prime(i div 1000)) then
&&& begin&
inc(count);& write(i:8);&
writeln('count=',count);
11、求以内的所有纯素数。纯粹素数是这样定义的:一个素数,去掉最高位,剩下的数仍为素数,再去掉剩下的数的最高位,余下的数还是素数。这样下去一直到最后剩下的个位数也还是素数。(纯素数不同于超级素数,注意二者的区别)&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&& (答案:1013、1097、1103)
program I_14;
& for x:=1000 to 1200 do
&&& if prime(x)=true then
&&&& if prime(x mod 1000)=true
&&&&& if prime(x mod 100)=true
&&&&&& if prime(x mod 10)=true
then write(x:8);
12、一个合数,去掉最低位,剩下的数仍是合数,再去掉剩下的数的最低位,余留下来的数还是合数,这样反复,一直到最后公剩下的一位数仍是合数;我们把这样的数称为纯粹合数。求100~500之间所有纯粹合数的个数。&&&&&&&&& &&&&&&&&&&&&&&&&&&&&&&&&&&&& &&&&&&&&&&&
&&&&&& (答案:58)
program I_18;
& for i:=100 to 500 do
&&& if (prime(i)=false) and
(prime(i div 10)=false) and (prime(i div 100)=false) and ((i div 100)&&1)
&&&&& then& begin write(i:8); inc(s);
& writeln(s);
13、试找出5个小于160而成等差数列的素数。&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&& (答案:5、11、17、23、29;或5、17、29、41、53)
program I_28;
& for i:=2 to 160
&&& for d:=1 to 26
prime(i)=true then
&&&&&&& if
prime(i+d)=true then
&&&&&&&&& if
prime(i+2*d)=true then
&&&&&&&&&&& if
prime(i+3*d)=true then
&&&&&&&&&&&&& if
prime(i+4*d)=true then writeln(i:4,i+d:4,i+2*d:4,i+3*d:4,i+4*d:4)
14、如果两个素数之和的一半仍然是一个素数,则这三个素数可以组成一个等差素数组,如(3+7)/2=5,则(3,5,7)为一个等差素数组,编程求100以内的所有等差素数组。&&&&&&&&&&&&&&
&&&&&& (答案:共46组)
program e6_9;
& for i:=2 to 100 do
&&& for d:=2 to 100 do
((i+2*d)&100)and(prime(i)=true)and(prime(i+d)=true)and(prime(i+2*d)=true)
write(i:8,i+d:8,i+2*d:8,'':16);
15、某自然数n的所有素数因子的平方和等于n,(n&100),请找出二个这样的自然数n。
&&&&&& (答案:4、9、25、49)
program e6_9;
& for i:=2 to 100 do
&&& for j:=2 to i do
&&&&& if (i mod
j=0)and(prime(j)=true) then s:=s+j*j;
&&& if s=i then write(i:8);
1、1002255&&&&&&&&&&&&&&&
program e2_25;
&& writeln('input a integer number:');
readln(n);& write(n,'=');
& while n&1
&&&&& for i:=2
&&&&&&& if n
mod i=0 then
&&&&&&&&& begin
&&&&&&&&&&&
n:=& write(i);& dec(i);
&&&&&&&&&&& if
n&1 then write('*')&
2、21000281247141247142828
&&& (答案:6、28、496)
& i,j,n,s:
& for i:=2 to 1000 do
&&&&& n:=i;&
&&&&& for j:=1 to n div 2 do
&&&&&&& if n mod j=0 then
&&&&&&&&& s:=s+j;
&&&&& if s=n then write(n:8);
3、3642233716539&&&&&&&&&&&&&&&&&&&&&
(答案:①3&&&&&&&&&&& ②83&&&&&&&&& ③97
n:=0;& x:=716539;& write(x,'=');
& while (x&1) do
&&& for i:=2 to x do
&&&&& if (x mod i=0) then
&&&&& begin
&&&&&&& write(i);& x:=&
inc(n);& dec(i);
&&&&&&& if x&1 then write('*');
writeln('n=',n);
4、NNN2812471428562821700&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
(答案:①6&&&&&&&&&&& ②672
& i,j,n,count:
& for i:=1 to 700 do
&&& for j:=1 to i do
&&&&& if (i mod j=0) then n:=n+j;
&&& if (n mod i=0) then begin& inc(count);&
write(i:8);&
writeln('count=',count);
5、2482481100&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
(答案:①16&&&&&&&&&&&&&&&& ②96
& i,j,n,count:
& for i:=1 to 100 do
&&& for j:=1 to i do
&&&&& if (i mod j=0) then inc(n);
&&& if (i mod n=0) then begin& write(i:8);&
inc(count);&
writeln('count=',count);
6、3000AABBBAABAB&&&&&&&&&&&&
&&&&&& 2202841184121026202924
function qinmi(n:integer):
&&& for j:=1 to n-1 do& if (n mod j=0) then s:=s+j;
&&& qimi:=s;
& for i:=2 to 3000 do
&&& if (qinmi(i)&3000)and(qinmi(qinmi(i))=i)and(i&&qinmi(i))
&&&&& writeln(i:8,qinmi(i):8);
7、一个自然数,若它的素因数至少是两重的(相同的素因数至少个数为二个,如:36=2*2*3*3),则称该数为"漂亮数"。若相邻的两个自然数都是"漂亮数",就称它们为"孪生漂亮数",例如8和9就是一对"孪生漂亮数"。编程再找出一对"孪生漂亮数"。&&&&&&&&&&&&&&&&&&&&&&&
(分析:素因素至少是两重的则说明这个数至少能被素因素的平方整除,注意此程序退出语句用法)
&&& (答案:288和289、675和676)
function piaoliang(x:longint):
&&& flag:=& y:=x;
&&& if y&4 then begin
&&& while y&1 do
&&&&& for a:=2 to y do
&&&&&&& begin
&&&&&&&&& if (y mod
(a*a)&&0)and(a*a&y) then begin piaoliang:=& end
&&&&&&&&& else if (y mod
(a*a)=0) then
&&&&&&&&&&& repeat
&&&&&&&&&&&&& y:=
&&&&&&&&&&& until (y mod
&&&&& &&&&if a&
&&& if flag=true then
piaoliang:=true else piaoliang:=
&&& inc(i);
(piaoliang(i)=true)and(piaoliang(i+1)=true) then
&&& begin& writeln(i:8,i+1:8);&&
& until(i&1000);
8、6的因子有1、2、3、6,它们的和1+2+3+6与原数6的比值等于2,比6小的数的这个比值都小于2,比6大的数一直到12,才有(1+2+3+4+6+12)/12=2.33,比值超过2。 编程序,给出120以内最大比值的统计表,即从6开始计算此值,得到更大的此值就输出,再得到新的更大比值则再输出,一直到120,输出格 式为: &&&&&&&&&&&&&&&&&&&&&&&& &&&&&&&&&&&&&&&&&&&&
&&& 6 12 。。。
&&& 2 2.33 。。。(其中比值精确到小数点后第二位)
(答案:&&& 6&&&&& 12&&&& 24&&&& 36&&&& 48&&&& 60&&&& 120
&&&&&&&&&& 2.00&& 2.33&& 2.50&& 2.53&& 2.58&& 2.80&& 3.00&&&&&& )
& i,j,k,s:
& a:array[1..120]
& b:array[1..120]
&& a[1]:=6;&
b[1]:=2;& k:=1;
& for i:=6 to 120 do
&&& for j:=1 to i do
&&&&& if (i mod j=0) then s:=s+j;
&&& if (s/i)&b[k] then
begin& inc(k);& a[k]:=i;&
b[k]:=s/i;&
& for i:=1 to k do
write(a[i]:8);
& for i:=1 to k do
write(b[i]:8:2);
&&&&&& N8M3&&&&&&&&&&& 36152847
& m,n,i,count,x:
& a:array[1..1000]
& writeln('input integer number for
n(people number):'); readln(n);& x:=0;
& writeln('input integer number for m:');
readln(m);
& for i:=1 to n do a[i]:=1;
& x:=0; count:=0; i:=0;
&&& inc(i);&
if i=n+1 then i:=1;
&&& if a[i]=1 then inc(count);
&&& if count=m then begin count:=0;& write(i,' '); a[i]:=0; inc(x);
& until(x=n);
2、n1233123331
&&&&&& (算法分析:开始选举之前用n个数组存放数1,当报数为3的倍数时,更改存放的数为0(0表示淘汰出局),直到最后只有两个1为止)
&&& (测试数据:N=8; 答案:4)
program e4_7;
& a:array[1..1000]
& i,n,b,count:
&& write('input N:');
& read(n);
& for i:=1 to n do a[i]:=1;
& count:=n;
& while count&1 do
&&&&& if count=2 then
&&&&&&& begin
&&&&&&&&& for i:=1 to n do
&&&&&&&&&&& if a[i]=1 then
begin write(i);
&&&&&&& end
&&&&& else
&&&&&&& begin
&&&&&&&&& b:=0;
&&&&&&&&& for i:=1 to n do
&&&&&&&&&&& begin
&&&&&&&&&&&&& if a[i]=1 then
&&&&&&&&&&&&& if (b mod
3=0)and(b&0) then begin a[i]:=0; dec(count); b:=0;
&&&&&&&&&&&
&&&&& if count=2 then
&&&&&&& begin
&&&&&&&&& for i:=n downto 1 do
&&&&&&&&&&& if a[i]=1 then
begin write(i);
&&&&&&& end
&&&&& else
&&&&&&& begin
&&&&&&&&& b:=0;
&&&&&&&&& for i:=n downto 1 do
&&&&&&&&&&& begin
&&&&&&&&&&&&& if a[i]=1 then
&&&&&&&&&&&&& if (b mod
3=0)and(b&0) then begin a[i]:=0; dec(count); b:=0;
&&&&&&&&&&&
3、1011010121000&&&&&&&&&&&&&&&&&&&&
&&&&&& 2479
program e4_8;
& a:array[1..10]
& for i:=1 to 10 do a[i]:=1;
& for i:=1 to 1000 do
&&&&& n:=n+i;
&&&&& if n mod 10=0 then a[10]:=0 else a[n mod
& for i:=1 to 10 do
&&& if a[i]=1 then write(i:8);
4、2N12N11MM1MN11MMO*
5、123NN11MMM1N30M
1、100ABAB
& a,b,c:array[0..1000] of
&&& i,j,code:
&&& repeat
&&&&& writeln('input
A:');& readln(s1);& flag:=
&&&&& a[0]:=length(s1);
&&&&& for i:=1 to a[0] do
&&&&&&& if
(ord(s1[i])&48)or(ord(s1[i])&57) then flag:=
&&& until flag=
&&& for i:=1 to a[0] do
val(s1[a[0]-i+1],a[i],code);
&&& repeat
&&&&& writeln('input
B:');& readln(s2);& flag:=
&&&&& b[0]:=length(s2);
&&&&& for i:=1 to b[0] do
&&&&&&& if
(ord(s2[i])&48)or(ord(s2[i])&57) then flag:=
&&& until flag=
&&& for i:=1 to b[0] do
val(s2[b[0]-i+1],b[i],code);
&&& if a[0]&b[0] then
t:=a[0] else t:=b[0];
&&& for i:=1 to t do
&&&&& c[i]:=c[i]+(a[i]+b[i]);
&&&&& if c[i]&=10 then
begin inc(c[i+1]);& c[i]:=c[i] mod 10;
& &&while c[c[0]]=0 do dec(c[0]);
&&& for i:=c[0] downto 1 do
write(c[i]);
{============main=========}
2、100ABAB
& a,b,c:array[0..1000] of
&&& i,j,code:
&&& repeat
&&&&& writeln('input
A:');& readln(s1);& flag:=
&&&&& a[0]:=length(s1);
&&&&& for i:=1 to a[0] do
&&&&&&& if
(ord(s1[i])&48)or(ord(s1[i])&57) then flag:=
&&& until flag=
&&& for i:=1 to a[0] do
val(s1[a[0]-i+1],a[i],code);
&&& repeat
&&&&& writeln('input
B:');& readln(s2);& flag:=
&&&&& b[0]:=length(s2);
&&&&& for i:=1 to b[0] do
&&&&&&& if
(ord(s2[i])&48)or(ord(s2[i])&57) then flag:=
&&& until flag=
&&& for i:=1 to b[0] do
val(s2[b[0]-i+1],b[i],code);
(a[0]&b[0])or((a[0]=b[0])and(s1&s2)) then
&&&&& for i:=1 to a[0] do
&&&&& begin
&&&&&&& if a[i]-b[i]&0 then
begin a[i+1]:=a[i+1]-1;& a[i]:=a[i]+10;&
&&&&&&& c[i]:=a[i]-b[i];
&&&&& write('-');
&&&&& for i:=1 to b[0] do
&&&&& begin
&&&&&&& if b[i]-a[i]&0 then
begin b[i+1]:=b[i+1]-1;&
b[i]:=b[i]+10;&
&&&&&&& c[i]:=b[i]-a[i];
&&& while c[c[0]]=0 do
dec(c[0]);
&&& for i:=c[0] downto 1 do
write(c[i]);
{============main=========}
3、100ABA*B
& a,b,c:array[0..1000] of
&&& i,j,code:
&&& repeat
&&&&& writeln('input
A:');& readln(s1);& flag:=
&&&&& a[0]:=length(s1);
&&&&& for i:=1 to a[0] do
&&&&&&& if
(ord(s1[i])&48)or(ord(s1[i])&57) then flag:=
&&& until flag=
&&& for i:=1 to a[0] do
val(s1[a[0]-i+1],a[i],code);
&&& repeat
&&&&& writeln('input
B:');& readln(s2);& flag:=
&&&&& b[0]:=length(s2);
&&&&& for i:=1 to b[0] do
&&&&&&& if
(ord(s2[i])&48)or(ord(s2[i])&57) then flag:=
&&& until flag=
&&& for i:=1 to b[0] do
val(s2[b[0]-i+1],b[i],code);
&&& i,j,k:
&&& for i:=1 to a[0] do
&&&&& for j:=1 to b[0] do
&&&&& begin
c[i+j-1]:=c[i+j-1]+(a[i]*b[j] mod 10);
c[i+j]:=c[i+j]+(a[i]*b[j] div 10)+(c[i+j-1] div 10);
&&&&&&& c[i+j-1]:=c[i+j-1] mod
&&& while c[c[0]]=0 do
dec(c[0]);
&&& for i:=c[0] downto 1 do
write(c[i]);
{============main=========}
4、ABAB32767ABN1N200
&&&&&& ①A1B1997N25& 0.8
&&&&&&&&&&&&&&&&&&&&&&&&&&& ②A19997B197N=15&&&&& 101.969
program I_23;
& a,b,c,n,i:
writeln('input A,B and N:');&
readln(a,b,n);
& write(a,'/',b,'=');& write(a div b);& write('.');&
& for i:=1 to n do
&&& begin c:=a*10& a:=10*& write(c);&
5、N1N100N
&&&&&& 2500
& a,b,c:array[0..1000] of
& n,i,j,k:
&&& i,j,k:
&&& for i:=1 to a[0] do
&&&&& for j:=1 to b[0] do
& &&&&begin
c[i+j-1]:=c[i+j-1]+(a[i]*b[j] mod 10);
c[i+j]:=c[i+j]+(a[i]*b[j] div 10)+(c[i+j-1] div 10);
&&&&&&& c[i+j-1]:=c[i+j-1] mod
&&& while c[c[0]]=0 do
dec(c[0]);
&&& for i:=c[0] downto 1 do
write(c[i]);
{============main=========}
&& writeln('input n(&=100):');& readln(n);&
& for i:=1 to n do
&&& j:=1000;
&&& while c[j]=0 do dec(j);
&&& a[0]:=j;
&&& for k:=j downto 1 do begin
a[k]:=c[k];& c[k]:=0;&
&&& b[1]:=i mod 10;& b[2]:=(i div 10) mod 10;& b[3]:=(i div 100) mod 10;
&&& b[0]:=3;
& write(n,'!=');&
6、XnXnX&50n&10
(测试数据:X=49,n=9; 答案:0449)
& a,b,c:array[0..1000] of
& x,n,i,j,k:
&&& i,j,k:
&&& for i:=1 to a[0] do
&&&&& for j:=1 to b[0] do
&&&&& begin
c[i+j-1]:=c[i+j-1]+(a[i]*b[j] mod 10);
c[i+j]:=c[i+j]+(a[i]*b[j] div 10)+(c[i+j-1] div 10);
&&&&&&& c[i+j-1]:=c[i+j-1] mod
&&& while c[c[0]]=0 do
dec(c[0]);
&&& for i:=c[0] downto 1 do
write(c[i]);
{============main=========}
&& writeln('input x(&50) and
n(&10):');& readln(x,n);& c[1]:=1;
& for i:=1 to n do
&&& j:=1000;
&&& while c[j]=0 do dec(j);
&&& a[0]:=j;
&&& for k:=j downto 1 do begin
a[k]:=c[k];& c[k]:=0;&
&&& b[1]:=x mod 10;& b[2]:=(x div 10) mod 10;& b[3]:=(x div 100) mod 10;
&&& b[0]:=3;
& write(x,'^',n,'=');&
7、求9(共29组789)除以79的商和余数。
(答案:余数8&&&& 商:100重复一次9997339)
const w=3*29;& m=79;
& a,b:array[0..w]
&& a[0]:=0;
& for i:=1 to 29 do begin& a[3*i-2]:=7;&
a[3*i-1]:=8;& a[3*i]:=9;&
& i:=0;& j:=1;
x:=a[i]*100+a[i+1]*10+a[i+2];
&&& b[j]:=& j:=j+1;
&&& a[i]:=(x mod m) div
100;& a[i+1]:=((x mod m) div 10) mod
10;& a[i+2]:=(x mod m) mod 10;
&&& i:=i+1;
& until i=w-1;
& b[j]:=(a[w-1]*10+a[w]) div
& writeln('yu
shu:',(a[w-1]*10+a[w]) mod m);
& write('shang:');
& if b[1]=0 then
&&& for i:=2 to j-1 do
write(b[i])
&&& for i:=1 to j-1 do
write(b[i]);
nm1m2nmnNm1m2mn
nm1m2nmn&&&&&&& Nm1m2mn
&&&&&& & 01
&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&& n
&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&
1230123012334448
1、排列算法。N123NN
NN3123132213231312321P1P2P3Pn
&&& S1PJ1&PJJI
&&& S2PK&PI1KJ
&&& S3PI1PJ
&&& S4PIPnPI1Pn1PIPn
2J8& 3P31P8
&&& 4P3P9P4P8P5P7P6P6
const maxn=10;
& plan:array[1..maxn]
& i,j,n,total:
&&& inc(total);
&&& write('(',total:5,'):');
&&& for i:=1 to n do
write(plan[i]:5);
while(i&1)and(plan[i]&plan[i-1]) do dec(i);
&&& while plan[j]&plan[i-1]
do dec(j);
&&& k:=plan[i-1];& plan[i-1]:=plan[j];&& plan[j]:=k;
&&& for k:=i to ((n+i) div 2)
&&& begin& h:=plan[k];&
plan[k]:=plan[n+i-k];&
plan[n+i-k]:=h;&
& write('please input n:');
& readln(n);
& total:=0;
& for i:=1 to n do plan[i]:=i;
&&& if i&1 then begin
& until i&=1;
& writeln('total ways
=',total);
(备注:生成排列的方法很多,比较常用的还有标志位法,可以用一个数组C作为标志数组,另一个数组A存放排列好的元素,凡数组A中用过的元素,数组C中相应下标的位置成TRUE或数字1,否则置成FALSE或数字0。)
2、组合算法N123NR
&&& 1123&&&&&&&&&&& 2124&&&&&&&&&&&&& 3125
&&& 4134&&&&&&&&&&& 5135
&&& 7234&&&&&&&&&&& 8235
&&& S11N123345
&&& S242131
&&& 1N&&&&& N1KKNNK1
const maxn=10;
& plan:array[1..maxn]
& i,j,n,r,total:
&&& inc(total);
&&& write('(',total:5,'):');
&&& for i:=1 to r do
write(plan[i]:5);
& write('please input n and
& readln(n,r);
& total:=0;
& for i:=1 to r do plan[i]:=i;
(i&0)and(plan[i]=n+i-r) do dec(i);
&&& if i&0 then
&&&&& inc(plan[i]);
&&&&& for j:=i+1 to r do
&&&&&&& plan[j]:=plan[j-1]+1;
& until i=0;
& writeln('total
ways=',total);
const maxn=10;
& plan:array[1..maxn]
& m:array[1..maxn]
& i,j,n,total:
&&& inc(total);
&&& write('(',total:5,'):');
&&& for i:=1 to n do
write(m[plan[i]]:5);
while(i&1)and(plan[i]&plan[i-1]) do dec(i);
&&& while plan[j]&plan[i-1]
do dec(j);
&&& k:=plan[i-1];& plan[i-1]:=plan[j];&& plan[j]:=k;
&&& for k:=i to ((n+i) div 2)
&&& begin& h:=plan[k];&
plan[k]:=plan[n+i-k];&
plan[n+i-k]:=h;&
& write('please input n:');
& readln(n);
& writeln('input ',n,' integer
number:');
& for i:=1 to n do read(m[i]);
& total:=0;
& for i:=1 to n do plan[i]:=i;
&&& if i&1 then begin
& until i&=1;
& writeln('total ways
=',total);
4、选排列算法。有N本不同的书摆放在书架上,设其编号分别为1、2、3、……、N,现要从其中取出R本书摆放在另一个书架上,编程求解这R本书的不同摆放方案和摆放方案总数。
&&& (算法分析:此问题的实质即求N个元素中取出R个元素的选排列。我们可以先求出从N个元素中取出R个元素的组合方案,每求出一种组合方案后,马上求出这种组合方案的全排列即可)
&&& (测试数据:N=5,R=3;共5×4×3种选排列方案)
const maxn=10;
plan:array[1..maxn]
p,z:array[1..maxn]
i,j,k,n,r,total:
inc(total);
write('(',total:5,'):');
for k:=1 to r do write(p[plan[k]]:5);
while(i&1)and(plan[i]&plan[i-1]) do dec(i);
while plan[j]&plan[i-1] do dec(j);
k:=plan[i-1];&
plan[i-1]:=plan[j];&& plan[j]:=k;
for k:=i to ((r+i) div 2) do
begin& h:=plan[k];& plan[k]:=plan[r+i-k];& plan[r+i-k]:=h;&
for i:=1 to r do begin&
plan[i]:=i;& p[i]:=z[i];&
&&&&& if i&1&&
until i&=1;
& write('please input n
readln(n,r);
for i:=1 to r do z[i]:=i;
while (i&0)and(z[i]=n+i-r) do dec(i);
if i&0 then
&&&&& inc(z[i]);
&&&&& for j:=i+1 to r do
&&&&&&& z[j]:=z[j-1]+1;
until i=0;
writeln('total ways=',total);
5、N2N94869N
算法分析:先用素数子函数找出小于N的所有合数,按照顺序存入一个数组中,然后参照上面的第3题即可求得这些合数的全排列,在每个全排列中判断是否合符题意的规则即可求得解答
const maxn=10;
& plan:array[1..maxn]
& m:array[1..maxn]
& i,j,k,n:
function prime(x:longint):
&&& y:=trunc(sqrt(x));
&&& flag:=
&&& for j:=2 to y do
&&&&& if (x mod j = 0) then
begin flag:=
&&& if x&2 then
&&& if flag=true then
prime:=true else prime:=
function gls(x,y:longint):
&&& a,b,t:
&&& if x&y then begin
a:=x;& b:=y; &end&
else begin a:=y;& b:=x;&
&&& repeat
&&&&& if (a mod b=0) then
begin gls:=b;&& end
&&&&& else
&&&&&&& begin t:=& a:=b;&
&&& until b=1;
&&& gls:=1;
&&& for i:=1 to n-1 do
&&&&& if gls(m[plan[i]],m[plan[i+1]])=1
&&& for i:=1 to n do
write(m[plan[i]]:4);
while(i&1)and(plan[i]&plan[i-1]) do dec(i);
&&& while plan[j]&plan[i-1]
do dec(j);
&&& k:=plan[i-1];& plan[i-1]:=plan[j];&& plan[j]:=k;
&&& for k:=i to ((n+i) div 2)
&&& begin& h:=plan[k];&
plan[k]:=plan[n+i-k];&
plan[n+i-k]:=h;&
& write('please input N:');
& readln(k);
& for j:=4 to k do
&&& if prime(j)=false then
begin inc(n);& m[n]:=j;&
& for i:=1 to n do plan[i]:=i;
&&& if i&1 then begin
& until i&=1;
(分析:从第十天的一个枣开始倒数往前推理,则第九天为(1+1)×2=4个,…,1534)
const n=10;
x:=1;& i:=1;
& while i&n do
&&& inc(i);&
x:=(x+1)*2;
& writeln(x);
2、ABCDABCCDDC
(分析:因为牵扯C的线索最多,故从C入手。假设C是小偷,则ABD均说真话,C说假话符合题意。所以C是小偷)。
&&&&&& 13123353379114313151719nn3
&&&&&& (提示:找出n与最小的奇数x之间的关系式即可,x=(1+2+…+(n-1))+1,即x=n(n-1)+1。)
4、110012&&&&&
&&&&&& (答案:①10&&&&&&&&&&&&&&& ②100&&&&&&& 程序略)
5、52223344152
&&&&&& (算法分析:如果这个数的因子(包括1和它本身)总数为奇数时,将是正面朝上的,否则将正面朝下。如9号位置这张牌,1把它朝上,3把它朝下,9把它朝上。仔细分析:任何一个数的因子都是成对出现,如6:1×6、2×3,所以它将正面朝下;只有平方数如9、16等,因为它有一对因子相同,这样产生了奇数个因子,所以它将正面朝上。)
6、5121150058)
(分析:所有一位数都是回文数,(共9个),只有11、22、33、……等二位数是回文数(共9个),三位数中当百位与个位相同时则为回文数,如有101、111、121等(共4×10个=40个))
7、甲、乙、丙三人共有384本书,先由甲分给乙、丙,所给书数分别等于乙、丙已有的书数,再由乙分给甲、丙,最后由丙分给甲、乙,分法同前,结果三人图书数相等。编程求甲、乙、丙三人原各有书多少本?
&&& (分析:从最后数本数相等往前推理。答案:甲=208;乙=112;丙=64)
8、有这样的一个六位数字labcde,将其乘以3后变成abcdel,编程求这个数。
(分析:只有7乘以3的个位为1,因此e=7,即有1abcd7×3=abcd71,由于1abcd7的个位的7乘以3 等于21,即向十位进2后变为abcd71的十位7,因此可推出1abcd7的d乘以3的个位应该等于(7-2)=5,而只有5乘以3的个位为5,所以有d=5,即有1abc57×3=abc571,同理往前推有c乘以3的个位为(5-1)=4,因此有c=8,即有1ab857×3=ab8571,b乘以3的个位为(8-2)=6,因此b=2,即有1a2857×3=a28571,a乘以3的个位为(2-0)=2,因此a=4,即有142857×3=428571,所以六位数labcde应该为142857)
program I_27;
& for i:=110000 to
&&& if i*3=(i mod
+1 then write(i:8);
9、设a、b、c、d为四个不同的正整数,前3个数组成等比数列,后3个数组成等差数列,且c+d=44,求a、b、c、d这四个数各为多少?
(分析:根据条件设a=t,b=tq,c=tq2,d=2tq2-tq。由c+d=44,代入求得3tq2-tq=44,即tq(3q-1)=44,由于44可分解为1×44、2×22、4×11三种,分别讨论:如当3q-1=1时,则tq=44,求得q=2/3,t=66,代入求得c=88/3与已知它们为正整数相矛盾,故排除;同理讨论其它,最后得出答案:①(22、22、22、22);②(1、4、16、28))
10、8313289
(分析:个位数平方后是9的只有3和7,从左边看,这个数能因式分解,并且这个数平方后产生的四位数的千位数是8,因此从这些特征入手分别将13、23、33……等代入,只有93的平方为8649,并且93=3×31,所以到此可知道此等式为[3×(23+8)]2=8649)。
11、1053873
(分析:设李先生的岁数为a,他的夫人的岁数为b。根据已知条件有a2=1053-b;b2=873-a。估计他们的岁数均为几十岁,则1053-b的大概范围在1000~1030之间,而在此之间的平方数只有32,即a=32,代入可求得b=29,恰巧满足两个条件,所以李先生32岁,他夫人29岁)
12、123368
个球,取出8个球后剩下4个球,那么取8个球的方法和取4个球的方法一样多。现在只有红、白、黑三种颜色的球,分别用A、B、C表示,即A+B+C=4,且A的范围是0~3,B的范围是0~3,C的范围是0~6,按照一定的规律讨论:如A=0,B=0,C=4即是一种取法,计作(0,0,4),同理有(0,1,3)(0,2,2)等,共有
发表评论:
模板制作:

我要回帖

更多关于 有这样一道题 计算 的文章

 

随机推荐