欢迎来到起遇信息学
起遇信息学正处于上线筹建阶段,以下功能已全部开放免费体验: ✅ 完整题库浏览与代码提交评测(C / C++ / Python / Java 等) ✅ 入门到进阶的系列课程试读、作业与考试 ✅ AI 提示、AI 作业分析等智能助教功能 ✅ 赛事模拟与个人能力报告 ✅ 邮箱注册开放 ⏳ 付费课程订阅与微信/支付宝支付通道 ⏳ 手机号登录,微信扫码登录、微信公众号绑定 使用中如遇任何问题,欢迎通过页面底部 **"联系我们"** 与我们沟通。
T2 题目:计算x的最终值,并判断过程及结果中是否会溢出
结构:使用栈。每一个for会有一个对应的end作为结束标志,最先出现的end对应最后出现的for,和栈“先进后出”性质一致。
状态维护:tot初始为1:每层for循环运行数乘积。
stack stk:目前没有end对应的for的运行数。x记录答案。
步骤:1.add x+=tot,判断是否超2^32-1,若超,输出不可能
2.for n tot*=n,stk.push(tot)
3.end tot/=stk.top()
4.输出答案
难点与易错:
判断溢出这里,有两个难点:
一、add操作时x+tot溢出后究竟是变成负数还是超过Max?
所以将x+tot与Max比较不现实
当x+tot>Max时,x>Max-tot。减法不会溢出,可以实现相同效果
二、tot超了怎么做
tot*n>Max时,tot*n也可能溢出。
当tot*n>Max时,tot>Max/n。除法也不会溢出。
tot的数据范围要扩大,原因是tot超了x不一定会超(没有add的情况),有end时又有可能回到不超的状态。
T5
题目:给一串字符,可以将dot替换成.,将at替换成@。替换后的字符串,有且仅有一个@,@和.均不能出现在答案的首尾. 思路:扫一遍,at不是dot的前缀也不是后缀,不会有既可以换成@又可以换成.的情况。 易错:首尾都不能有.或@
T6 题目:在一串包括()[]的括号中找到合法的括号序列,使它含左中括号数量最多 思路:括号匹配,需要用栈 易错:找到的合法序列中一定要有左中括号。
0 条评论
目前还没有评论...
Be the first to comment!
返回讨论列表
107
通过题目
10
发帖数