pascal问题{2009年青岛市程序设计竞赛试题(初中B组)【决赛试题】}

pascal问题{2009年青岛市程序设计竞赛试题(初中B组)【决赛试题】},第1张

虽然程序不会长,但是给的分太少了,我说一个解题思路好啦

1.如果没有时限的话就一个一个枚举过来计算统计;有时限的话首先可以考虑打表。(不过10^9比较痛苦)

现场做的话这样考虑,动规。a〔i〕[j]表示从10^(i-1)到10^i-1页数中数码j有几个(就是i位数页数中数码j有几个)。用a[i][j]可以推a[i+1][j],最后还要稍稍处理一下。

2.经典的排序丫,数据很小,n^2排序都可以。编程方便就用冒泡吧,用插入排序也可以。快排对于小数据就失去意义了。

3.直接构造。先找第一位。比如10,找离他最近的三的幂次,就是9,于是r进制第三位(表示3^2)就是1;接下来原数减去这个幂次,就是1,再找离它最近的三的幂次,是9,于是r进制第一位(表示3^0)就是1,1减去1,变成0了,就可以了。

没有构造到的r进制位数就是0。

负数也一样,只不过取的是"-",比如-3,离它绝对值最近三的幂次是3,于是r进制第2位(表示3^1)就是“-”,接下来-3-(-3)=0,就结束了。

鄙视你我说了解题思路你都不能打程序还参加什么竞赛。另外,你们考试没有标程还叫什么考试?要标程当然自己去竞赛组委会要,我写一个程序给你又有什么意义?

第一题用贪心法做,第二题你的思路是正确的,要用二维数组然后判断,只是读入的时候要这样写:

for i:=1 to n do

begin

for j:=1 to m do

read(a[i,j])

readln

end

这样就不存在什么有空格的问题了。还有第三条,数据量太大,可能会超时。

另外解释一下什么是数据范围,就是题目告诉你它会给你的数据的大小,让你有准备,定义好变量,以免到时候测评时运行超时(运行必须一秒钟内出结果,否则算错)


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11585096.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-17
下一篇 2023-05-17

发表评论

登录后才能评论

评论列表(0条)

保存