turbopascal11教学版.ppt_第1页
turbopascal11教学版.ppt_第2页
turbopascal11教学版.ppt_第3页
turbopascal11教学版.ppt_第4页
turbopascal11教学版.ppt_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2011年长沙市小学生计算机奥林匹克竞赛决赛试题,一、爱心捐赠: 小明和小朋友们共同献爱心捐赠的图书共n类,每类m本。现在要将这些书全部分给各个希望小学,规定:分给每个希望小学的书数量相同,种类k尽量多,并且每类书数量=k。 小明请你算算共能捐赠多少个希望小学?,var m,n,k:longint; begin readln(n,m); k:=n+1; repeat k:=k-1; until (n mod k=0)and(m mod k=0); writeln(xuexiao=,n*m div (k*k); readln; end.,【输入】n m(n,m=10000) 【输出】xuexiao=学校数 【样例】输入:12 54 输出:xuexiao=18,二、报数游戏 小明和小红一起玩报数游戏:小明按1-A1循环报数,小红按1-A2循环报数。两人同时开始,并以同样的速度报数,当两人都报了N个数时,统计出两人同时报相同数的次数,先算对者获胜。请你算出正确答案,当他俩的裁判。,var n,a,b,a1,a2,t:integer; begin readln(n); readln(a1,a2); t:=0; a:=0; b:=0; repeat n:=n-1; a:=(a+1) mod a1; if a=0 then a:=a1; b:=(b+1) mod a2; if b=0 then b:=a2; if a=b then t:=t+1; until n=0; writeln(t); readln; end.,2009年长沙市小学生计算机奥林匹克竞赛决赛试题,输入:N(N=100) A1 A2 (A1、A2取值范围:210) 输出:一个整数 例如:输入:10 2 3 输出:4,N-1到0正好是N个,2008年长沙市小学生计算机奥林匹克竞赛决赛试题,三、整数处理 电脑老师让小慧编程做一道题:输入一个正整数A(A100000000),如果的个位数字是5,则统计能被5整除多少次?否则,统计A当中含有多少个“0”?你能做吗?,var a,t:longint; begin readln(a); t:=0; if a mod 10=5 then while a mod 5=0 do begin a:=a div 5; t:=t+1; end else while a0 do begin if a mod 10=0 then t:=t+1; a:=a div 10; end; writeln(t); readln; end.,例如:输入:125 输入:305160 输出:3 输出:2,2007年长沙市计算机奥林匹克竞赛决赛试题,四、判奇偶求和 输入一个正整数n,如果n是奇数,则求1n之间所有的偶数之和;如果n是偶数,则求n所有的约数之和。 输入:n(标准整型) 输出:和值(测试数据会保证这个值在标准整型范围),var n,i,t,s:longint; begin readln(n); t:=0;s:=0; for i:=1 to n do begin if i mod 2=0 then s:=s+i; if n mod i=0 then t:=t+i; end; if n mod 2=1 then writeln(s) else writeln(t); readln; end.,样例1:输入:11 输出:30 样例2:输入:12 输出:28,(1)摆正方形(文件名e1) 用长a厘米,宽b厘米的长方形硬纸片摆成一个正方形(中间无空隙),至少要用几个长方形硬纸片?输入a,b,输出长方形的个数.,Var a,b,c:longint; begin Readln(a,b); C:=a-1; Repeat c:=c+1; Until (c mod a=0)and(c mod b=0); Writeln(c*c) div (a*b); readln; End.,第 十一 课 习 题 分 析 巩 固,存在问题: (1)没用longint (2)有人用枚举,例:输入: 6 4 输出: 6,练习1,Readln(a,b); C:=a+1; Repeat c:=c-1; Until (a mod c=0)and (b mod c=0); Writeln(a*b) div (c*c);,输入: 60 40 输出:6,把一张长a厘米,宽b厘米的长方形纸板剪成边长是整数厘米数的小正方形,且无剩余,最少可以剪成多少块,注意括号,(2)求数列的和 (文件名:e2) 已知数列5、7、11、17、25、,输入正整数n,编程输出该数列的第n项和这n项的和。,var a,b,n,i,s:longint; begin readln(n); a:=5;s:=a;b:=0; for i:=2 to n do begin b:=b+2; a:=a+b; s:=s+a; end; writeln(a); writeln(s); readln; end.,存在问题: (1)1通不过 (2)输入输出不符 (3)输出只有一项,例:输入: 4 输出: 17 40,有一列数1、3、5、7、9、1、3、5、7、9、1、3、5、7、9、,输入正整数n,求第n个数及这n个数之和是多少?,练习2,var n,a,s,i:longint; begin readln(n); a:=-1;s:=0; for i:=1 to n do begin a:=(a+2) mod 10; s:=s+a; end; writeln(a); writeln(s); readln; end.,例:输入:8 输出:5 34,输入m、n,求数列1,6,7,12,13,18,19,.的第m项被n除余几?,练习3,var m,n,a,i:longint; begin readln(m,n); a:=0; for i:=1 to m do if i mod 2=1 then a:=a+1 else a:=a+5; writeln(a mod n); readln; end.,例: 输入:6 7 输出:4,(3)N位小数(文件名:e3) 输入一个正整数N(1N200),求12013的值。要求计算结果精确到小数点后N位,求这N位小数中有多少个8?,var a,b,n,i,t:integer; begin readln(n);t:=0; a:=1; b:=2013; for i:=1 to n do begin a:=a*10; if a div b=8 then t:=t+1; a:=a mod b; end; writeln(t); readln; end.,存在问题: (1)小数点后N位 (2)先mod后div (3)把小数后一位一位推到整数来找,输入:15 输出:2 (1/2013=0. 000496770988574),var a,b,n,i,t:integer; begin readln(a,b,n); a:=a mod b;t:=0; for i:=1 to n do begin a:=a*10; if a div b mod 2=1 then t:=t+1; a:=a mod b; end; writeln(t); readln; end.,练习4: 输入两个正整数A和B,其中A、B都小于32767,求AB的值。要求计算结果精确到小数点后N(1N200)位,求这N位小数中奇数有几个?,输入:8 7 20 输出:10,1、先a div b求商数; 2,再a mod b 求余数*10; 3、如此循环n遍,var a,b,c,n,i,t:integer; begin readln(a,b,n); t:=0;c:=a div b; while c0 do begin if c mod 10 mod 2=1 then t:=t+1; c:=c div 10; end; a:=a mod b; for i:=1 to n do begin a:=a*10; if a div b mod 2=1 then t:=t+1; a:=a mod b; end; writeln(t); readln; end.,练习5: 输入两个正整数A和B,其中A、B都小于32767,求AB的值。要求计算结果精确到小数点后N(1N200)位,求商的这N位小数中的奇数和整数部分的奇数共有几个?,输入:120 7 20 输出:12,(4)斐波那契公约(文件名:e4) 对于Fibonacci数列:1,1,2,3,5,8,13大家应该很熟悉吧但是现在han有一个很“简单”问题,:第n项和第m项的最大公约数是多少?,var m,n,a,b,c,x,fm,fn,t:longint; begin readln(n,m); t:=2; a:=1; b:=1; repeat t:=t+1; c:=a+b; a:=b;(前项=后项,递推) b:=c; if t=n then fn:=c; if t=m then fm:=c; until t=m; x:=fm+1; repeat x:=x-1; until (fn mod x=0)and(fm mod x=0); writeln(x); readln; end.,存在问题: (1)递推都错 (2)第n项没算准 (3)拷贝不走样,输入格式 两个正整数n和m。(n,m=40) 输出格式 Fn和Fm的最大公约数。 样例输入 4 7 样例输出 1,变形的斐波那契 问题描述:设有一个数列A1,A2,A3,AN,其中A1,A2由键盘输入,从A3开始,通过下列的公式计算: AN-2 AN-1 AN 偶数 奇数 2AN-2+AN-1 奇数 偶数 AN-2+2AN-1 偶数 偶数 AN-2+AN-1+1 奇数 奇数 AN-2+AN-1 如:A1=1,A2=2, 则A3=1+2*2=5, A4=4+5=9, A5=5+9=14,var n,a1,a2,a3,i:longint; begin write(N,A1,A2=);readln(n,a1,a2); for i:=3 to n do begin if (a1 mod 2=0)and(a2 mod 2=1) then a3:=2*a1+a2; if (a1 mod 2=1)and(a2 mod 2=0) then a3:=a1+2*a2; if (a1 mod 2=0)and(a2 mod 2=0) then a3:=a1+a2+1; if (a1 mod 2=1)and(a2 mod 2=1) then a3:=a1+a2; a1:=a2; ;(前项=后项,递推) a2:=a3; end; writeln(A(,n,)=,a3); readln; end.,输入N和A1,A2,输出第N项。 如输入:N ,A1 ,A2= 9 1 2 则输出:A(9)=269,(5)阶乘非0位之和 (文件名:e5) 输入二个正整数n(n1000),x(x6),输出n的阶乘非0数字的最右x位的各位数字之和。,var n,x,i,s,t:longint; begin readln(n,x); s:=1; for i:=1 to n do begin s:=s*i; while s mod 10=0 do s:=s div 10; s:=s mod 1000000;(一定要六位) end;writeln(s);(括号) t:=0; for i:=1 to x do begin t:=t+s mod 10; s:=s div 10; end; writeln(t); readln; end.,存在问题: (1)中间过程保留位数多了或少了 (2)还有人先算全部再取舍 (3)不能由x确定中间保留几位 (4)先保留后去零,如:输入: 18 5 输出:22 (18!=6402373705728000, 0+5+7+2+8=22),(6)阶乘非0位之和(文件名:e6) 输入二个正整数n(n1000),x(x6),输出n的阶乘非0数字的最右x位的各位数字之和。 如:输入: 18 5 输出:22,var n,x,i,s,s1,t,t1:longint; begin readln(n,x); s:=1;s1:=1; for i:=1 to n do begin s:=s*i;s1:=s1*i; while s mod 10=0 do s:=s div 10; while s1 mod 10=0 do s1:=s1 div 10; s:=s mod 10000000; s1:=s1 mod 100000; writeln(s:10,s1:10); end; t:=0;t1:=0; for i:=1 to x do begin t:=t+s mod 10; s:=s div 10; end; for i:=1 to x do begin t1:=t1+s1 mod 10; s1:=s1 div 10; end; writeln(t:10,t1:10); readln; end.,11!: 399168 99168 12!: 4790016 90016 13!: 2270208 70208 14!: 1782912 82912 15!: 2674368 24368 25!: 985984 10984,34!: 964352 64352 35!: 3375232 25232 36!: 1508352 8352 37!: 5809024 9024 38!: 742912 42912 39!: 8973568 73568,(6)分数相加(文件名:e6) 有n(1=n=4)个分数,求这n个分数的和。 【输入】:第一行,n表示分数的个数,后面有n行给出n个分数,每个分数给出形式为x y (0=x=300,1=y=300,x为分子,y为分母) 【输出】:一行,分数的和(其结果必须为最简分数;如果分母为1,输出为整数;不考虑分子与分母的大小问题),var a,b,c,d,n1,m,n,t,g:longint; begin readln(n1); readln(a,b); t:=0; repeat t:=t+1; if t=1 then begin m:=a;n:=b;end else begin readln(c,d);m:=a*d+c*b;n:=b*d;end; g:=n+1; repeat g:=g-1; until (m mod g=0)and(n mod g=0); a:=m div g; b:=n div g; until t=n1; if b=1 then writeln(a div b) else writeln(a,/,b); readln; end.,(1)n=1也要约分 (2)两个两个加,问题就简化,【输入样例】 2 1 2 2 3 【输出样例】 7/6,附加:(7)第n个数 (文件名:e7) 有一整数如下: 113135135713579,输入正整数n,求从左往右数第n位是几?,var i,j,k,n,t:integer; begin write(n=);readln(n); t:=0;i:= -1; repeat i:=i+2;j:= -1; i:每段最后数,j:计数器,1i repeat j:=j+2;k:=j;k:每个数统计位数 repeat k:=k div 10; t:=t+1; t:计位器 until (t=n)or(k=0); until (t=n)or(j=i); until t=n; if k=0 then writeln(j mod 10) else writeln(k mod 10); readln; end.,例:输入: 14 输出: 7,练习5: 有一整数如下: 112123123412345 求从左往右数第n位是几?,var i,j,k,n,t:integer; begin write(n=);readln(n); t:=0;i:=0; repeat i:=i+1;j:=0; i:分段用,j:计数器,1i repeat j:=j+1;k:=j;k:每个数统计位数 repeat k:=k div 10; t:=t+1; t:计位器 until (t=n)or(k=0); until (t=n)or(j=i); until t=n; if k=0 then writeln(j mod 10) else writeln(k mod 10); readln; end.,n=54 9 n=55 1 n=56 0 n=57 1 n=58 2 n=100 1 n=9999 8,Var n,I,j,s,k,t:integer; Begin write(n=);readln(n); i:=0; t:=0; repeat i:=i+1; j:=i;s:=i; repeat j:=j+1; s:=s+j; until s=n; if s=n then begin write(n,=,i); for k:=i+1 to j do write(+,k); writeln; t:=t+1; end; until in div 2; if t=0 then writeln(no); readln; End.,练习6: 输入一个正整数n,输出一串连续整数的和,其和等于n,若不存在,输出no.,n=2010 2010=4+5+62+63 2010=91+92+109+110 2010=127+128+140+141 2010=162+163+172+173 2010=400+401+402+403+404 2010=501+502+503+504 2010=669+670+671,【问题描述】 康熙皇帝在一次学习数学的过程遇到这样一道题:对一个给定的自然数M ,求出所有的连续的自然数段(连续个数大于1),这些连续的自然数段中的全部数之和为M 。 例子:1998+1999+2000+2001+2002 = 10000,所以从1998到2002的一个自然数段为M=10000的一个解。假设你是康熙皇帝的谋士,请你利用计算机程序帮他解决下面的要求所提出的问题。 【输入格式】 输入包含一个整数M的值(10= M = 2,000,000) 【输出格式】 每行两个自然数,给出一个满足条件的连续自然数段中的第一个数和最后一个数,两数之间用一个空格隔开,所有输出行的第一个按从小到大的升序排列,对于给定的输入数据,保证至少有一个解。 例如输入一个数字 50 则输出 8 12 11 14 即表示8到12这个自然数段的和为50,11到14的自然数段的和也为50,Var n,I,j,s,k,t:integer; Begin readln(n); i:=0; repeat i:=i+1; j:=i;s:=i; repeat j:=j+1; s:=s+j; until s=n; if s=n then writeln(i, ,j); until in div 2 ; readln; End.,求连续正整数 【问题描述】 给出一个自然数N(1N15,且N为奇数),要求找出这样的N个连续的正整数,使得前(N+1)2个正整数的平方和等于后(N-1)2个正整数的平方和。 例如:当N=5时,满足条件的5个正整数为:10,11,12,13,14 且102+112+122=132+142 输入:N 输出:满足条件的N个正整数。,Var n,I,j,s,s1,k,t:integer; Begin write(n=);readln(n); i:=0; repeat i:=i+1; j:=i;s:=i*i; t:=1; repeat j:=j+1; s:=s+j *j; t:=t+1; until t=(n+1) div 2; s1:=0; t:=0; repeat j:=j+1; s1:=s1+j *j; t:=t+1; until t=(n-1) div 2; if s=s1 then begin for k:=i to j do write(k, ); writeln; end; until s=s1; writeln; readln; End.,求连续正整数 【问题描述】 给出一个自然数N(1N15,且N为奇数),要求找出这样的N个连续的正整数,使得前(N+1)2个正整数的平方和等于后(N-1)2个正整数的平方和。 例如:当N=5时,满足条件的5个正整数为:10,11,12,13,14 且102+112+122=132+142 输入:N 输出:满足条件的N个正整数。,var n,i,j,k,x,y:integer; begin repeat write(n=); readln(n); until (n mod 2=1)and(n1)and(n=15); i:=0; repeat i:=i+1;x:=0;y:=0; for j:=i to i+(n+1) div 2 -1 do x:=x+j*j; for k:=j+1 to j+(n-1) div 2 do y:=y+k*k; until x=y; for j:=i to i+n-1 do write(j:4); writeln; readln; end.,NICOMACHUS定理 问题描述 NICOMACHUS定理:任何一个整数的立方都可以表示成一串奇数的和,例如:13=1=1,23=3+5=8,33=7+9+11=27,43=13+15+17+19=64,输入任一整数n,输出这一整数的立方与一串奇数的和。 输入输出样例: 输入:n=4 输出:64=13+15+17+19,Var n,I,j,s,k,t:integer; Begin write(n=);readln(n); i:=-1; repeat i:=i+2; j:=i;s:=i; t:=1; repeat j:=j+2; s:=s+j; t:=t+1; until t=n; until s=n*n*n; write(n*n*n,=,i); for k:=i+2 to j do if k mod 2=1 then write(+,k); writeln; readln; End.,第 十一 课 连 续 整 数,NICOMACHUS定理 问题描述 NICOMACHUS定理:任何一个整数的立方都可以表示成一串奇数的和,例如:13=1=1,23=3+5=8,33=7+9+11=27,43=13+15+17+19=64,输入任一整数n,输出这一整数的立方与一串奇数的和。 输入输出样例: 输入:n=4 输出:64=13+15+17+19,var n,i,j,k,x,y:integer; f:boolean; begin write(n=); readln(n); i:=-1; repeat i:=i+2;x:=i;y:=0; for j:=1 to n do begin y:=y+x; x:=x+2; end; until y=n*n*n; write(y,=,i); for j:=1 to n-1 do begin i:=i+2; write

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论