2019.4.4校选补题

A
就是问a^3 - b^3 = p有没有解,然后其实可以因式分解,可以化为(a - b)(a^2 + ab + b^2) = p,因为p是素数,所以p只能被1和它本身整除,所以a - b和a^2 + ab b^2有一个为1,又因为a,b是正整数,所以后者最小为3,所以只能是a - b = 1;所以a^2 + ab + b^2 = p,带入a - b = 1,得3b^2 + 3b + 1 - p = 0;所以只要判断有没有整数解,所以只要判断刀塔(sqrt(12 * p - 3) - 3) / 6 小数点后是否为0,这个判断可以用floor向下取整来判断,即if(x == floor(x)) ,就为小数点后全是0得double数;那么这个问题就解出来了;
复习:如何判断是否为整数,(int) x == x;
向上取整是什么ceil,四舍五入是round;

B
思路:
1、当什么时候是Richman?很明显,当n == m,如果m小于n,那么一定不是Richman,因为第m+1本书的价值有限;
2、当什么时候是Impossible?
当无论钱为多少的时候,证明无论钱有多么的少,买的书的数目都大于m,什么导致的?一定是价格为0的书,这个在样例中有提示,但可能会理解有偏差,我在这里犯的错误:我想的是从前面找m本书,然后判断序列的剩余部分的最小值,如果最小值为0,就会Impossible;我错在了这里,因为我忘记了如果减少钱的话,是有可能把0取到,然后是可以有解的;
实际上这道题在这里的正解是:想Impossible的原因,其实就是0的数量cnt <= m; 如果cnt > m;一定无解,如果cnt <= m,一定有解;
3、sum怎么求?
前面两个特判后,来求sum,要买m - cnt本书,就遍历数组买不为0的书,用一个cur计数,如果cur == m - cnt;就break,这里要注意的是这个判断一定要在循环最前面,因为如果cnt等于m的话,这个循环是不应该进行的;然后sum还可以加,就是加后面序列里的非0(判断非0可以是if(a[i], 而我写错了写的!a[i], 导致错误) 最小的数x - 1;因为数据最大是1e9,所以long long x = 1e9; 然后O(n)遍历找最小值,因为不能再继续买了,所以要 - 1;

C

1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看REAdMe.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看REAdMe.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看READme.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值