Python实现算法设计问题:一本书的页码从自然数1开始顺序编码直到自然数n,自然数n保存在input.txt中,统计出总页码中每个数字出现的次数,并将结果保存在文件output.txt中。

        (题目来自:计算机算法设计与分析 王晓东 编著)

        一本书的页码从自然数1开始顺序编码直到自然数n。书的页码按照通常的习惯编排,每个页码都不含多余的前导数字0。例如第6页用6表示而不是06或006。数字统计问题要求对给定书的总页码,计算出书的全部页码中分别用到多少次数字0,1,2,3,.....9。

        数据输入:输入数据由数据名为input.txt的文件提供,文件只有1行,给出书的总页数n

        数据输出:将计算结果输出到文件output.txt中,输出文件共有10行,在第k(k=1,2,...10)行输出页码中用到的数字k-1的次数。

        小白没学过C++,也没get到算法的精髓,就简单粗暴的用python提供以下思路吧。

# 统计总页码中,每个数字出现的次数
record = {} # 用于记录每个数字出现的次数
all_num = [] # 用于记录所有出现的数字
with open('input.txt','r') as file:
    in_page = int(file.read());
    print(in_page);
#in_page = int(input("请输入总页码:"))
# 合并字符串,保存到一个列表
for page in range(1,in_page+1):
    if page<10:
        o_page = page%10;
        all_num.append(o_page);
    elif page<100:
        o_page = page % 10;
        t_page = page // 10;
        all_num.append(t_page);
        all_num.append(o_page);
    elif page<1000:
        o_page = page % 10;
        t_page = (page // 10)%10;
        h_page = page // 100;
        all_num.append(h_page);
        all_num.append(t_page);
        all_num.append(o_page);
    elif page<10000:
        o_page = page % 10;
        t_page = (page // 10)%10;
        h_page = (page // 100)%10;
        s_page = page // 1000;
        all_num.append(s_page);
        all_num.append(h_page);
        all_num.append(t_page);
        all_num.append(o_page);
    else:
        print("数据超出上限");
# print(all_num) 输出一下,全是单个数字
# 遍历列表,循环增加
for i in range(9):
    record[i] = all_num.count(i);
    #print(i,"出现的次数:",record[i]);
    file = open('output.txt','a')
    file.write(str(record[i]));
    file.write("\n");
    file.close();
print("程序结束");

        课本要求总页码小于10^9,这里仅仅if到10^5,后面换汤不换药了。

        欢迎一起交流学习!

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值