您的位置:首页 > 其它

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

2018-02-04 00:16 274 查看

 第一次接触大数据处理的问题。基本思路是将大数据的每一位数分别放入数组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控制多次进位;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  蓝桥杯