菜鸡捡了最简单的一题做做。。。
在vivo产线上,每位职工随着对手机加工流程认识的熟悉和经验的增加,日产量也会不断攀升。
假设第一天量产1台,接下来2天(即第二、三天)每天量产2件,接下来3天(即第四、五、六天)每天量产3件 … …
以此类推,请编程计算出第n天总共可以量产的手机数量。
输入例子1:
11
输出例子1:
35
例子说明1:
第11天工人总共可以量产的手机数量
class Solution {
public:
int solution(int n){
int sum=0;
int curgap=1;
int i=1;
while(n){
for(int j=1;j<=curgap;j++){
sum+=curgap;
i++;
if(i>n) return sum;}
curgap++;
}
}
int solution2(int n) {
int sum=0;
int order=0;
for(;n>0;n--)
{order=ceil((sqrt(0.25+2*n)-0.5));
sum+=order;}
return sum;
}
};
两种解法,第二种是列的一元二次方程,根据等差数列列方程式,再用求根公式,向上取整就能得到当天的产量。如1+2=3,又1+2+3=6;也就是第4,5,6天是产三个。。。1+2+3+…+x=n(n+1)/2,这就是个一元二次方程,求x向上取整就可以了。