输入一个数作为天数,求1+2+2+3+3……到输入天数的和
这是vivo春招一套试卷的最后一题,也是我唯一写出来了,大家不要笑话我,我知道我很笨
下面,我把我的代码放上,希望对不知道怎么做的小伙伴有所帮助
//在vivo产线上,每位职工随着对手机加工流程认识的熟悉和经验的增加,日产量也会不断攀升。 //假设第一天量产1台,接下来2天(即第二、三天)每天量产2件,接下来3天(即第四、五、六天)每天量产3件 ... ... //以此类推,请编程计算出第n天总共可以量产的手机数量。 public static int solution (int n) { int count=0,sum=0,i,a; for(i=1,a=1;i<=n;i++,a++){ count+=i;//1+2+3+4+5…… if(count>=n){//满足条件,就是说明count的和刚好大于输入的n count=i-count+n;//i是当前每天生产几个手机,count-n是输入天数和生成i台手机最后完成的天数(最后结果是工作了多少天) sum+=i*count;//最后一次的 和:(天数*当前每天生产多少手机) break; } sum+=a*a;//前面122333的和,但不包括最后一次的 } return sum; }当然,还有一个题我不会,就是这个试卷的第二题,不知道怎么判断没有能×出来的数:这是我写的,题目是输入一个数,比如 36,返回结果 49,其中49的单个位数相乘,结果是输入的36这个数,输入100,结果455.希望大佬能教教我,我百度了一下没有答案,呜呜呜
public static int Count(int n){ for (int i=0;;i++) { if(i>n*100){ return -1; } int c=i; int j=0; int[]arr=new int[(i+"").length()]; while (c>0) { arr[j++]=c%10; c/=10; if (c==0){ int sum=1; for (int k=0;k<arr.length;k++) { sum *= arr[k]; } if (sum==n){ return i; } } } } }