pascal编程

[复制链接]
查看11 | 回复4 | 2009-6-8 23:10:16 | 显示全部楼层 |阅读模式
楼上两位 你们搞笑了...看看数据范围吧for i:=m to n do 很有可能要等上几个小时这道题的标准解法:设S[n, k]表示1到n出现的数字k个数。则m到n中数字k出现的总次数为S[n, k] - S[m-1, k]故只需要设计一个算法使得可以在较快时间内算出1到r中出现各种数字次数就可以了。注意到数字的出现是相当有规律的,如果r = 123,那么只看个位的话出现序列是1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,.....7,8,9,0,1,2,3其中1234567890这个子序列出现了[123/10]=12次 ...
回复

使用道具 举报

千问 | 2009-6-8 23:10:16 | 显示全部楼层
1,2楼想要分也不能这样啊.........这数据范围.....作人不能这样啊...
回复

使用道具 举报

千问 | 2009-6-8 23:10:16 | 显示全部楼层
这是我写的,都对,便于理解,有注释,希望能帮助你。varm,n,i,t:longint;
{m,n,t,i都为longint(长整型)}a:array[0..9]of longint; {a数组用来存每一个数字出现的次数}begin
{程序开始} readln(m,n)...
回复

使用道具 举报

千问 | 2009-6-8 23:10:16 | 显示全部楼层
program count; var a:array['0'..'9']of longint;b:string;m,n,i,j:longint;c:char;begin&nbsp&nbsp
readln(m,n);&nbsp&nbsp
for i:=m to n do&nbsp&nbsp&nbsp&nbsp
...
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行