1044. Lucky Tickets. Easy!

题意理解:

http://acm.timus.ru/problem.aspx?space=1&num=1044

本题是计算幸运票数的问题。幸运票是偶数位的票号,2,4,6,8,而且前一半的号码和后一半的号码数字之和相同。

问题分析:

对于2位数票号:幸运票号是00,11,22,33,44,55,...,99

对于4位数票号:前两位数可以从00遍历到99,计算出它们的数字和。对于每个数字和,计算可能的两位数数字排序的数目。依次加起来就是总的幸运票数。

以此类推,

这样问题转到:根据固定的数字和,计算数字的排列数。这个问题处理思路如下:

遍历一位数、两位数、三位数、四位数,统计他们对应的数字和情况。

对于1位的数字和:和为0,1,2,...,9,排列数都为1;

对于2位的数字和:遍历0,0到9,9,转化为 个位的数字和对应的排列数 × 十位的数字和对应的排列数 累加 个位数字加十位数字之和的排列数;

对于3位的数字和:遍历0,0,0到0,9,9,转化为 个位、十位和百位的数字和对应的排列数乘积 累加到 个位+十位+百位数字之和的排列数。

因为题目只要求2,4,6,8,可以单独计算4,6,8位数对应的排列数。

其他:

方法不是最好,走了弯路。思路太弱了。。。

代码路径:

https://github.com/xierensong/learngit/blob/master/timus/t1044.cpp

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值