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

猜你喜欢

转载自blog.csdn.net/xiexie1357/article/details/80864202