一道关于大数的ACM题的讨论过程——沟通与发散思维
最近打算重新巩固基础,今天刚刚注册了POJ,看看题,在ACM群里灌灌水。今天就有一次小成功,吹得大点叫头脑风暴,说小点就是水文一篇,题本身比较水,技术层面很水很低端~感觉除了个人还不算全部丢失的一些数学小修养外,摸清来龙去脉,充分沟通是非常重要的。保留一份,将来没准对自己还是一个提示,一份灵感。 故事还要从群友的一个问题说起: 某群友遇到了一个问题,要储存非常大非常大的数,什么大整数表示法之类的说实话我也不懂,知道原则上讲,整型不同于浮点,就是躺在那里的二进制数(先不说源码补码的问题~),那么很容易的,把他们肢解成更多个整型数,到时候想办法拼起来,理论上也不是不可行的,到时候运算怎么办?还得想办法,自定义函数去吧,或者转成double运算。没有深究这个问题,因为今天重点不在这。 为什么说沟通重要,重要就在这了,他的这个问题把我们引向了没有建设性的方向,顺着这个方向走,多少都是无用功。想找到有建设性的解决方法,还是要摸清需求,我也这样做了,所以把思路放在他的题上,更有针对性,也纠正了大整型的错误解题思路。 另外,实践也很重要,我不动手敲两下,就不会发现那个pow函数返回的结果已经是inf正无穷了,所以重新整理思路,想起来了乘法小规律,你要个十百三位的结果,那在万位上的数字不可能影响结果——结论就是在数据输入的时候就截断,而不是等到输出数据再处理。在该群友公布“参考答案”前找到了思路,嘿嘿,淫荡一笑。。。。 不过~是该好好补补数学基础了,感觉解题重要的是思路,然后才是写成代码,那些比较难得数学题直接把人秒杀了。看看那些ACM决赛题,都眼晕。不参加也总不能连看都看不懂吧。 顺便吐槽OJ系统的规则: 原来他对你的程序要求也不严,你绞尽脑汁想什么输入的非法验证,循环的严密,结果没头绪,不知那么难的问题要怎么解决好。殊不知,那个问题根本不用你操心,竞赛指导老师一道非常不严密的题就把你秒了,人家的就是能提交,就是能AC,其实,看起来,规则很简单。比如,所谓输入正整数,你不用去判断他是不是负数、是不是小数、是不是非法了,这些是对输入者的限制,和你没半毛钱关系,你只管闭着眼睛处理他要给你的数据格式和类型。甚至-1结束这种事都不用你时刻判断,你只需要在特定的场合,特定的位置(比如输入一组数之后,循环之外,或者某一行第一个位置,第二个位置就不行了,按他那破代码~),判断是否-1,判断是否退出,感觉这样你解题思路就进一步不严密,长时间下去容易禁锢思维,应试教育。不过好听点的解释是后边算法太难,你没心思纠缠这些细节,因为我还没玩转那么难的题,所以不好评论这种想法对不对。 ======================================================================================================================================================================================================================================================================== 下边是聊天过程 【大牛】xxxxx(xxxxx)? 8:39:22 PM 这是我的代码
不过是C语言 【菜鸟】huqinwei987(871452271)? 9:00:40 PM 多余的你不管啦,直接赋值给整型吧,反正就留那三位 【大牛】xxxxx(xxxxx)? 9:01:19 PM 问题是由double转换为int是要丢精度的 【菜鸟】huqinwei987(871452271)? 9:01:27 PM 你只要那三位 【大牛】xxxxx(xxxxx)? 9:01:30 PM 只要最后的三位 这种思路肯定是做不到的 不能用pow这个函数就 因为你没法接受这么大的数 【菜鸟】huqinwei987(871452271)? 9:02:12 PM 我试试那个函数的结果,那函数什么库来着,math 【大牛】xxxxx(xxxxx)? 9:02:15 PM 用double的话最后也没法处理啊 恩,对的 【菜鸟】huqinwei987(871452271)? 9:04:45 PM 678的1000,结果inf了 正无穷了怎么搞 【大牛】xxxxx(xxxxx)? 9:05:29 PM 给你看个超级简单的方法吧 【菜鸟】huqinwei987(871452271)? 9:05:58 PM 我淫荡的一笑 计算前线截断 留后三位就完了 【大牛】xxxxx(xxxxx)? 9:06:25 PM 呵呵,好聪明啊 【菜鸟】huqinwei987(871452271)? 9:06:36 PM 好像混了 【大牛】xxxxx(xxxxx)? 9:06:40 PM 【菜鸟】huqinwei987(871452271)? 9:07:39 PM 我要不敲两下,看到inf,也还跟你扯数据类型呢 【大牛】xxxxx(xxxxx)? 9:08:07 PM 这个就是思路啊 有时候可以很简单的 就看你想到不 【菜鸟】huqinwei987(871452271)? 9:08:33 PM 一些数学技巧 【大牛】xxxxx(xxxxx)? 9:08:57 PM 恩,就是啊,数学技巧 多谢啦 【菜鸟】huqinwei987(871452271)? 9:09:36 PM 你都找到答案了 没帮上 【大牛】xxxxx(xxxxx)? 9:09:59 PM 你也是做acm吗 还是工作了 【菜鸟】huqinwei987(871452271)? 9:10:10 PM 都老了。。。 练习练习 【大牛】xxxxx(xxxxx)? 9:10:45 PM 额,现在做社么工作啊 【菜鸟】huqinwei987(871452271)? 9:10:58 PM 辞了,读个工程硕士 很水 【大牛】xxxxx(xxxxx)? 9:11:12 PM 硕士啊 【菜鸟】huqinwei987(871452271)? 9:11:28 PM 都是混子 【大牛】xxxxx(xxxxx)? 9:12:02 PM 我也是混混,然后找工作 【菜鸟】huqinwei987(871452271)? 9:12:16 PM 我也是脑子生锈了,得巩固巩固 【大牛】xxxxx(xxxxx)? 9:12:51 PM 恩,那你也做做题吧,我以后有问题再请教 【菜鸟】huqinwei987(871452271)? 9:13:04 PM 不敢~ 讨论 【大牛】xxxxx(xxxxx)? 9:13:40 PM 【大神】傻子(1154573890)? 9:13:45 PM 你们俩谦虚了 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |