乐事在线笔试题.
来源:互联网 发布:linux ibus 编辑:程序博客网 时间:2024/04/27 18:47
刚刚忘记了将其他两道编程题放出来,所以现在补上来。
第二道的意思是:一个神女帮助主人公升级了精灵,于是主人公想奖励神女,意识除了支付升级费之外,额外给她一些奖励。
主要支付升级费A元,主人公携带了B元,但是奖励的条件比较特殊:1.总支付必须为5的倍数,2.奖励占总支出的5%~10%之间(包括边界),其中1<=A,B<=2000000000 ,且 B>=A
这个题我的代码的时间复杂度不够,我作了一些优化,比如:使每次的奖励加上原来的支付刚好是5的倍数;奖励占总支付的比例超过10%就停止;但是有一点优化的可能不是很到位,假如给定的A很大,所以奖励的初始值也对应很大,这个值的起始值如何与A配合好没想清楚,所以这个题需要请教一下大家。下面是我得代码,时间复杂度不够。
#include <iostream>using namespace std;int main(){int A = 0, B = 0;int takes = 0; //小费int toatl = 0; //总费int solutions = 0;while (cin >> A >> B){if (A < 1 || A > 2000000000){return 0;}if (B < 1 || B > 2000000000 || B < A){return 0;}int tmp = B - A; //剩余的钱int left = 5 - A % 5; int add = 5 - left; ////假如A=3,那么第一次补充2,第二次补充7...//问题出begin的处理上int begin = 0;if (A * 5 / 100 == 0){begin = add;}else{begin = A * 5 / 100;begin = begin + (5 - (begin + A) % 5); }for (int i = begin; i < tmp; i = i + 5){double discount = (i * 100) / (A + i);if (discount > 10){break;}else if (discount >= 5){++solutions;}}cout << solutions << endl;}return 0;}
第三题的大意是,输入S,且r^2 = S,现在以r为半径画圆(圆心为 (0,0) ),找出所有的落在圆上的整数点(横纵坐标都为整数),输入多组S,找出其满足的点的个数。这个题就比较简单了,使用勾股定理就行了。找出一条边上的,然后乘以4就可以了。
#include <iostream>using namespace std;int main(){int s;while (cin >> s){if (s<1 || s>2000000000)return 0;int count = 0;int r = sqrt(s);for (int i = 1; i <= r; ++i){int left = s - i * i;int lr = sqrt(left);if (lr*lr + i*i == s){++count;}}cout << 4 * count << endl;}return 0;}好了,以上就是这次笔试,吐槽完了,自己下去好好反思去了。
1 0
- 乐事在线笔试题
- 乐事在线笔试题.
- 乐事
- 笔试题10. 在线笔试
- ms在线笔试题
- 2015360在线笔试题
- indeed 在线笔试题
- 在线笔试题
- 新浪笔试题 (2011在线笔试)
- 中金在线笔试题
- google 2014在线笔试题
- 微软在线笔试题2015
- 2015小米在线笔试题
- 360在线笔试编程题
- 微软在线笔试题:FontSize
- 在线笔试题汇总 4.12
- indeed一道在线笔试题
- 一些软件公司在线笔试题
- 多线程同步---synchronize
- 触屏fling/scroll/drag的区别及其详细过程
- Linux学习之---管理及I/O重定向
- ios属性修饰符详解
- 点 圆柱类的设计2
- 乐事在线笔试题.
- Android的setTag
- 刚入行的产品新人,你其实可以写一份合格产品需求文档
- PHP面向对象——访问修饰符
- c++ 需要用拷贝构造函数的情况
- 基础入门之堆栈
- Oracle数据库语句大全
- 关系数据库设计范式介绍
- 状态机学习