蓝桥杯练习/基础练习 阶乘计算

 第一次接触大数据处理的问题。基本思路是将大数据的每一位数分别放入数组A【】中;将A的每一个元素与K相乘,设置一个if 处理进位问题。

 第一次将数组设为了7位,将n<1000的条件当作了位数。造成了第一个错误。

第二次尝试将数组设为两位,因为两个小于10的数相乘最大9*9=81;

未解决问题:设为两位后出现三位数高位的进位如何保存?失败。

第三次将数组放大为1000000;出现问题:1.进位;注意,从高位开始向前进位,直到个位,高位接受进位后加上自己本身如果大于10则需要继续进位。

        2.输出时从高位输出,如何避免前面不需要的0:for循环将i减到第一个非零位输出。

        3.11以上的计算出错:分行输出,发现有一位输出29;错误。

           解决:循环次数变为1000000时忘记更改;

    4.进位不正确:100以上的进位无法运算。

          解决:将for 换位while 循环;

      5.运行TLE:得分60;查看测试数据:312运行超时;程序需优化;

       解决:将100万位调位10万位;AC!(参考了他人的数据设置)


总用时3小时16分钟.....需熟练。

最终代码如下:

总结:重点1,数组保存大数据思想。

 重点2,进位算法。(每位相乘再进位相加)

重点3,continue 跳过开头的0;while控制多次进位;