vivo笔试题2020

T3——vivo智能手机产能

vivo笔试题2020_第1张图片

分析:即是要求1,2,2,3,3,3,4,4,4,4,5,5,5......的和,关键是确定第n天生产了多少,属于哪组重复数字。通过每次减去之前的重复个数,得到相应的增加个数,再求和即可。

代码如下:

# @param n int整型 第n天
# @return int整型
#
class Solution:
    def solution(self , n ):
        # write code here
        sum = 0
        for i in range(1,n):
            if n>0:
                sum = sum+i*min(i,n)
                n = n - i 
            #else:
                #break
        return sum

T2:vivo笔试题2020_第2张图片

分析:相当于求正整数n的因子,并且把因子从小到大,排列在从最高位到个位上,所以需要从9到2倒序寻找因子,把大的因子放到个位上。依此类推。借助递归进行求解,每次再求除数的因子,直到直接返回1-9的一位数。

也可参见:https://blog.csdn.net/baihehaitangyijiu/article/details/105604561

python代码如下:

# 输入一个整形数值,返回一个整形值
# @param n int整型 n>9
# @return int整型
#
class Solution:
    def recu_div(self, n):
        if n<10:
            return n
        for i in range(9,1,-1):
            if n%i==0:
                return self.recu_div(n//i)*10+i
        return -1
    def solution(self , n ):
        # write code here
        ans = self.recu_div(n)
        return ans if ans>0 else -1

(先2道吧,第一题还没时间看。。)

你可能感兴趣的:(leetcode,Python)