归途998
有趣的灵魂万里挑一。
  • 注册会员
circle-image
文章总计
0 篇文章
circle-image
获赞数
circle-image
总阅读量
0 阅读
circle-image
主页人气
405 人气
文章 动态 帖子
看起来这里没有任何东西。

加载中...

加载中...

  • 这题我儿子最近刚做到,结果他跑来问我,我说这还不简单,循环乘呗。他反手给我看题里那句话——“最终结果的绝对值不超过1000000”,我当时就愣了,那你还让a最大到1000000,n最大到10000,这不扯淡吗?2的20次方就超过100万了,后面那些测试点是不是都拿小数据糊弄人啊?真服了,出题人写个限制条件跟闹着玩似的。 不过话说回来,这题本身确实没啥可讲的,就是让练个循环。但我家孩子非要问有没有更快的办法,说老师讲的是直接for循环乘n次。我寻思n最大一万,乘一万次也没啥,但要是n再大点呢?比如a等于1的时候,你循环一万次不傻吗?直接判断a是不是1或者-1不完了?还有a等于0的情况,n是正整数,那结果就是0,也白乘。虽然这题数据小,暴力能过,但老师要是只教死循环,学生脑子就废了。 我当年学这个的时候,老师还专门讲了个快速幂,说递归啊二进制啊啥的,当时听得迷迷糊糊,后来自己琢磨通了其实就是把指数拆成二进制,比如算3的5次方,5是101,那就是3的4次方乘3的1次方,这样乘的次数少多了。但你说这题n才一万,快速幂反而显得小题大做。不过我觉得吧,信息学奥赛本来就是要培养思维,不是让你照着题目的数据范围凑个能过的代码就完事。你要是只为了过这道题,那确实简单,但后面遇到大指数你就傻了。 还有那个输出,题目说最终结果绝对值不超过1000000,那int就够了,但我不明白为啥还要强调这个,是怕有人用long long吗?还是说防止有人把a和n的范围搞混?反正我儿子第一次写的时候直接用了int,没问题。但我看到评论区有人问如果a是负数怎么办,n是奇数结果就是负的,这题里也没特别说明,但试一下样例就知道了,不算坑。 最让我无语的是这破题描述,写的“给出一个整数aa和一个正整数n”,这个aa是啥,复制粘贴过来的吧?还有“求乘方anan”,是不是该是a的n次方?排版都乱了。不过教材嘛,错别字在所难免,就是看着难受。总的来说,这道题适合刚学循环的新手,但别指望它能帮你拿到什么奖,纯属基础中的基础。你要是想给孩子讲点有意思的,不如顺便说说怎么处理大数,或者指数爆炸,别整天就那几道入门题翻来覆去。行了,吐槽完毕,带孩子刷下一题去了。

加载中...

来跟我聊聊吧~