懵逼中…我觉得我投这个完全就是感受一下编程题嘛…

测试什么的,以前可从来都没做过…在这里上一下两道编程题

[编程题|20分] 买苹果
时间限制:1秒
空间限制:32768K

题目描述:
小易去附近的商店买苹果,奸诈的商贩使用了捆绑交易,只提供6个每袋和8个每袋的包装(包装不可拆分)。
可是小易现在只想购买恰好n个苹果,小易想购买尽量少的袋数方便携带。
如果不能购买恰好n个苹果,小易将不会购买。

输入描述:
输入一个整数n,表示小易想购买n(1 ≤ n ≤ 100)个苹果

输出描述:
输出一个整数表示最少需要购买的袋数,如果不能买恰好n个苹果则输出-1

输入样例:
20

输出样例:
3

 

解析:题目没什么难点,数据量很小,暴力可过。

 

 

[编程题|20分] 最大的奇约数
时间限制:1秒
空间限制:32768K

题目描述:
大的奇约数
小易是一个数论爱好者,并且对于一个数的奇数约数十分感兴趣。一天小易遇到这样一个问题:
定义函数 f(x) 为 x 最大的奇数约数,x为正整数。 例如:f(44) = 11.
现在给出一个N,需要求出 f(1) + f(2) + f(3)…….f(N)
例如: N = 7

f(1) + f(2) + f(3) + f(4) + f(5) + f(6) + f(7) = 1 + 1 + 3 + 1 + 5 + 3 + 7 = 21

小易计算这个问题遇到了困难,需要你来设计一个算法帮助他。

输入描述:
输入一个整数N (1 ≤ N ≤ 1000000000)

输出描述:
输出一个整数,即为f(1) + f(2) + f(3)…….f(N)

输入样例:
7

输出样例:
21

 

解析:

这个题目数据量是给的挺大的,第一反应应该是打表 – 后来一想,数据量太大,打表也过不了。

然后,递推 – 等等很多。最后想了下,肯定是有公式的。

那么公式是什么呢…我们先来对这串数据解析一下。

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16……

首先对于奇数 – 是可以直接拿出来的…1 3 5 7 9 11 13 15 ……

然后对于剩下的偶数 2 4 6 8 10 12 14 16……对他们做除2处理得到:

1 2 3 4 5 6 7 8 ……

然后再对于奇数直接拿出来: 1 3 5 7… 偶数:2 4 6 8 …然后除2:1 2 3 4

然后再奇数拿出来 1 3… 偶数除2: 1 2…奇数拿出来1… 偶数除2 :1…

神奇!然后我们再看看这些值是多少:

1 3 5 7 9 11 13 15 …… 1 3 5 7 9 11 13 15(2)

1 3 5 7… 2  6 10 14(4)

1 3… 4 12(8)

1… 8(?)

1… 16(?)

把这些值加起来恰好就是我们要的值了…我在右边列出了他们的来源。

然后我在括号里列出了他们的公差…

嗯,懂了吧?还不懂?那就看代码:

//刚才又调试了一下 – 发现数据不全,我修改过了才是正确的…尴尬了。

上面的代码是最后本地调试的,但是我确定是正确的。提交的代码有点问题,但是却AC了…

网易公共技术 – 测试开发岗编程题两道
Tagged on:
0 0 投票数
Article Rating
订阅评论
提醒

0 评论
内联反馈
查看所有评论