描述
在手机产线上,每位职工随着对手机加工流程认识的熟悉和经验的增加,日产量也会不断攀升。
假设第一天量产1台,接下来2天(即第二、三天)每天量产2件,接下来3天(即第四、五、六天)每天量产3件 … …
以此类推,请编程计算出第n天总共可以量产的手机数量。
输入:第n天
输出:第n天总共可以量产的手机数量
输入样例 1 :11
输出样例 1:35
输入样例 2 :5
输出样例 2:11
根据题意可得出这其实是一个数列,1,2,2,3,3,3,4,4,4,5,5,5,5,5……求前N项和的问题,除此之外,把数字从上到下叠起来,这也是一个金字塔,最顶端是1,一直往下走,每行的行数与个数都相同,求前N个数的和,这个题网上查了一下,好多方法,有些高手的解法压根就看不懂,有的超级简练,网上果然高手如云啊!我这里根据自己的理解用了比较简单好理解的方法,跟网上的也很类似。
// 1 // 2 2 // 3 3 3 // 4 4 4 4 // 5 5 5 5 5 // 从上到下想象成一个金字塔,每行的行数与个数都相同,求前N个数的和。 int sum = 1; // 初始值1,最顶端1 int x = 2; // 行数,从第2开始算起 for(int i = 2; i <= n;) { // i为第几个数,从第2行第一个数开始算起,数量不超过N个 int number = 0; // 计数值,计算每行要加多少次相同的数字 while(number < x && i <= n) { // 每行内的运算 sum += x; number++; i++; } x++; // 加完一轮后,行数就+1了。 } return sum;
★附:对于该题目N+种解题方法,看不懂的欢迎回来看我的思路^-^
https://www.nowcoder.com/questionTerminal/2e4363c23c6741f98319d5a7e3882325
转载请注明:路飞博客 » vivo-2021Java笔试-智能手机产能问题
热门推荐
- Java随机生成姓名、手机号、邮箱、住址代码
- vivo-2021Java笔试-愚人节拆礼品盒问题
- com.mysql.jdbc.Driver和com.mysql.cj.jdbc.Driver的区别 serverTimezone设定
- Cannot resolve method findOne(java.lang.Long)
- Sort和PageRequest方法过时问题的解决办法
- NotBlank过时处理和@NotEmpty、@NotNull、@NotBlank 的区别
- Server Tomcat v8.5 Server at localhost was unable to start within 45
- request和response的setCharacterEncoding()方法