输入一个数作为天数,求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;
                }
            }
        }
    }
}

#vivo2020春招##vivo##笔试题目#
全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务