2013宁波小学生程序设计试卷解题报告by slzxlzw【精选】.doc

2013宁波小学生程序设计试卷解题报告by slzxlzw【精选】.doc

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
2013宁波小学生程序设计试卷解题报告by slzxlzw【精选】.doc

小学教育精选篇 问题 E: 哈夫曼编码(coding.pas) 题目描述 哈夫曼编码是一种编码方式, 是可变字长编码的一种, 由 Huffman 于 1952 年提出。该方法完全依据字符出现概率来构造异字头的平均长度最短的码字, 有时称之为最佳编码,一般就叫 Huffman 编码。简单地来说,就是出现概率高的字符使用较短的编码, 反之出现概率低的则使用较长的编码,这便使编码之后的字符串的平均期望长度降低, 从而达到无损压缩数据的目的。 现在请你模拟这样的原则对给定的一个字符串进行字母统计。 输入 输入文件 coding.in,只有一行,是一个字符串,由小写英文字母组成,长度不超过255 个字符。 输出 输出文件 coding.out,有若干行,每行有两部分组成:一个字母和该字母出现的频率,中间用一个空格分隔,并按频率高低排列,频率相同时则按字母的 ASC 码的先后顺序排列。 样例输入 soon 样例输出 o 2 n 1 s 1 提示 【题目分析】 给出一段字符串,在字符串中出现的字符按出现次数从多到少输出,出现次数一样按字母表顺序输出。 【算法分析】 模拟。开一个记录字符出现次数的数组,然后按照题意输出。 【参考程序】 var ch:char; a:array[a..z]of longint; max,i:longint; begin while not eoln do begin read(ch); inc(a[ch]); //记录出现次数 if a[ch]max then max:=a[ch]; //记录出现最大出现次数 end; for i:=max downto 1 do //按出现次数从大到小输出 for ch:=a to z do //相同的按字母表顺序输出 if a[ch]=i then writeln(ch, ,a[ch]); end. 问题 F: 立方和(cubsum.pas) 时间限制: 1 Sec??内存限制: 128 MB 提交: 37??解决: 21 [ HYPERLINK 38:8090/JudgeOnline/submitpage.php?cid=1017pid=5langmask=0 提交][ HYPERLINK 38:8090/JudgeOnline/problemstatus.php?id=1793 状态][ HYPERLINK 38:8090/JudgeOnline/bbs.php?pid=1793cid=1017 讨论版] 题目描述 现给出一个三位数, 先对这个三位数的各位数字的立方求和,然后再对求出的和中的各位数字的立方求和, 如此一直继续下去, 判断最后能否得到一个不再变化的固定值。如能得到一个固定值,就求出这个固定值;如果不能,则输出提示信息“error” 。另外请注意,在求解过程中,若某一次求和过程中得到的值超过三位数,则取该数的低三位继续往下运算…… 例如,对于三位数 111,则第一次计算应是 1×1×1+1×1×1+1×1×1=3,第二次计算应是 0×0×0+0×0×0+3×3×3=27,第三次计算应是0×0×0+2×2×2+7×7×7=351,第四次计算应是 3×3×3+5×5×5+1×1×1=153,第五次计算应是 1×1×1+5×5×5+3×3×3=153,与第四次计算的结果相同,这时可不再计算,输出固定值 153。 亲爱的同学,请你也来计算一下。 输入 输入文件 cubsum.in,只有一行,是一个三位数。 输出 输出文件 cubsum.out,也只有一行,如能得到一个固定值,则输出这个固定值;如 不能,则输出一个提示信息“error” 。 样例输入 111 样例输出 153 提示 输入样例 2: 102 输出样例 2: error 【题目分析】 对一个三位数字(多于三位取最低三位,少于三位添零计算)进行各个数位立方求和。判断是否最后变成一个固定的数。 【算法分析】 对于一个固定不变的数,则是与前一次相同,就是求立方和前相同。而没有固定值的数,则是在前面所有变化的数中出现过(当然排除前一次),因为会形成一个循环。像这样我们只要开一个记录是否出现过某个数的数组(0..1000)(不包括前一次),如果出现过就没有固定值。最坏情况也就o(1000),是个常数。 【参考程序】 var x,y,t:longint; a:Array[0..10000]of boolean; begin read(x); repeat t:=x; //保存一遍,因为下面x会变 y:=sqr(x mod 10)*(x mod 10); //求立方和 x:

文档评论(0)

liuxiaoyu92 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档