超长字符串

超长数字串


【问题描述】

给一个数字串 STR:123456789101112131415161718192021222324......它是由所有自然数从小到大依次排列起来的。任意给一个数字串 T,容易知道它一定在 STR 中出现无穷多次。现要求任意给一个数字 n 作为串 T,并按上述规则将从

1~n 的所有数字连续串在一起组成一个完整的串 S。求出串 T 在串 S 中所有出现

的位置。

例如,若 n=81,则从 1 到 81 的所有自然数连在一起构成串 S,而“81”首

次出现的位置为 27.你的任务是找出此串中“81”出现的所有位置和出现次数。最后给出一份列表,列出 n 从 1 到 100 时,所有字符串值为 n 的出现首位置和次数。

【基本要求】

1.输入 n 值后首先计算出串 S 的长度 L,计算公式的理论推导自行完成

(1<n<1000)。

2.串 S 的存储采用动态内存分配方式,并且要求将串指针和串长变量封装在一起(用结构体)。

3.程序要求实现两个功能(可通过按键选择实现):

其一为能够接受从键盘上输入的 n 值,并以此为依据生成串 S,然后输出串值为 n 的子串在 S 中出现的所有位置和次数。

其二为通过循环计算出 n 从 1 到 100 时,所有字符串值为 n 的出现首位置和次数,并将结果存储在一个文本文件中。

【输入输出】

对于第一个功能,输入输出形式为:输入数据:输入数值 n:12

输出数据:在从 1 到 12 所构成的串中,12 出现的位置分别是:1,14.共

出现 2 次。

对于第二个功能,输出形式为:

n 出现首位置出现次数

111

221

............

21152


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值