vivo笔试题

原题目:一个员工第一天生产一个手机,随着时间的增长他越来越熟练,第二天和第三天可以生产2台,后面的3天每天可以生产3台,再后面4天每天可以生产4台,请写出这个员工第n天总共可以生产多少个手机

思路一:

把生产手机天数分成n个区间

[1,2) 生产1台

[2,4)生产2台

[4,7)生产3台

[7,11)生产4台

以此类推

代码:

#include<stdio.h> int main(void) { int n; int i=1,day=1;//生产i台的天数有i天,day到day+i的区间的天数生产i台 scanf("%d", &n); while(1) { if(day<=n && n<day+i) //符合区间天数退出循环 break; day+=i; //转到下一个区间 i++; //下一个区间台数+1 } printf("第%d天生产%d台", n, i); return 0; }

思路二:

设输入的天数为m天

生产1台天数为1天

生产2台天数为2天

生产3台的天数为3天

………

生产n台的天数有n天

第m天等于前面n天的和

1+2+3+4+5+…+n=n*(n+1)/2=m

所以n=sqrt(1 + 8 * m) – 1) / 2,向上取整(天数不一定为生产n台的第n天)

代码:

#include <stdio.h> #include <math.h> int main(void) { int n; printf("请输入n的值: "); scanf("%d", &n); printf("第n天生产的数量:%d\n", (int)ceil((sqrt(1 + 8 * m) - 1) / 2)); return 0; }

原文链接:https://blog.csdn.net/weixin_46597732/article/details/122425141?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522165277698816781667851142%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=165277698816781667851142&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~first_rank_ecpm_v1~times_rank-2-122425141-null-null.nonecase&utm_term=vivo

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发
头像
文明发言,共建和谐米科社区
提交
头像

昵称

取消
昵称表情图片