3.8 VIVO笔试题

第一题,生产手机数目,AC
class Solution:
    def solution(self , n ):
        # write code here
        dp = [0] * (n+1)
        dp[1] = 1
        cur = 2
        for i in range(2, n+1):
            for j in range(i):
                dp[cur + j] = i
                if cur+j >= n:
                    break
            cur += i
            if cur > n:
                print(cur)
                break
        return sum(dp)
第二题,找出每位乘积等于N的最小数,过了70%
class Solution:
    def solution(self , n ):
        # write code here
        if n < 10:
            return 10 + n
        else:
            if self.is_zhishu(n):
                return -1
            else:
                yinzi = [2, 3, 5, 7]
                tmp = []
                while(n != 1):
                    for i in yinzi:
                        if n % i == 0:
                            n /= i
                            tmp.append(i)
                            break
                        elif i == 7 and n % i != 0:
                            return -1
                res = []
                cur = 1
                for i in tmp:
                    if cur * i < 10:
                        cur *= i
                        continue
                    else:
                        res.append(cur)
                        cur = i
                res.append(cur)
                res.sort()
                answer = 0
                w = len(res)-1
                for i in res:
                    answer += i * (10 ** w)
                    w -= 1
                return answer
    

    def is_zhishu(self, n: int)->bool:
        for i in range(2, n // 2):
            if n % i == 0:
                return False
        return True
第三题,相当于找出连接n次的数目,应该动态规划,时间不够了
class Solution:
    def solution(self , m , n ):
        table = [5, 7, 8]
        # write code here
        dp = [0] * (n + 2)
        dp[1] = 9
        dp[2] = 56
        dp[3] = 20 * table[0] + 28 * table[1] + 8 * table[2]
        if n <= 3:
            return sum(dp[m: n+1])
        else:
            pass


s = Solution()
res = s.solution(1, 2)
print(res)



#vivo##笔试题目#
全部评论
100%+100%+20%第三题返回测试用例就能拿个20%
1
送花
回复 分享
发布于 2020-03-08 16:08
这里有最后一题的解法。https://zhuanlan.zhihu.com/p/95618813
1
送花
回复 分享
发布于 2020-03-08 16:13
现代汽车中国前瞻数字研发中心
校招火热招聘中
官网直投
话说多少分是过哇,我好像总共只有70多分,这一个小时写起来有点赶🤣
点赞
送花
回复 分享
发布于 2020-03-08 16:04
和你的情况一样,1ac,2 ac70%,3 来不及随便写写
点赞
送花
回复 分享
发布于 2020-03-08 16:04
第三题神经病啊,真的不会
点赞
送花
回复 分享
发布于 2020-03-08 16:05
最后一题靠异常情况和提供的1,2混了30%
点赞
送花
回复 分享
发布于 2020-03-08 16:05
int main() {         // write code here         int n;         cin >> n;         vector<int> s;         for(int i = 9; i > 1; i--){             if(n % i == 0){                 s.push_back(i);                 n /= i;                 i = 10;             }             if(n == 1)                 break;         }                  if(n != 1)             cout << -1 << endl;         else{             stringstream aa;             sort(s.begin(), s.end());             for(unsigned i = 0; i < s.size(); i++){                 aa << s[i];             }             int sum = 0;             aa >> sum;             cout << sum << endl;         }              } 我第二题是求一个大于10的数的最小的因子组成的数,比如36,就输出49,因为4*9,我本地可以过,然后在它那一直说复杂度太高醉了
点赞
送花
回复 分享
发布于 2020-03-08 16:06
惹我第三题还在算.....应该是动态规划类似迷宫之类的......另外第二题我Ac80%?
点赞
送花
回复 分享
发布于 2020-03-08 16:06
。。。怎么大家第二题都是70%啊....
点赞
送花
回复 分享
发布于 2020-03-08 16:06
第二题什么代码都不写,直接return -1都过了20%😂
点赞
送花
回复 分享
发布于 2020-03-08 16:07
第二题过了60。java本来想用并发流提高速度的。结果更慢,估计判题机单核,forkjoin起到了反作用
点赞
送花
回复 分享
发布于 2020-03-08 16:08
第一题AC,第二题0.7,第三题0.7(LeetCode 351)估计是python卡常数时间了....
点赞
送花
回复 分享
发布于 2020-03-08 16:09
A了两题,第三题没时间搞了,看着又很复杂,直接 ''' return 0 ''' 过了20%,emmm
点赞
送花
回复 分享
发布于 2020-03-08 16:10
第三题没来得及做了 有大神讲一下思路么
点赞
送花
回复 分享
发布于 2020-03-08 16:11
if n < 10:             return 10 + n //改成直接return -1就过了你信吗😂
点赞
送花
回复 分享
发布于 2020-03-08 16:13
第二题我最后是这么想的,但是!!!!来不及了啊,给我十秒钟都可以啊🤣最后才想到,改完来不及粘贴了
点赞
送花
回复 分享
发布于 2020-03-08 16:24
我第一天过,第二题写完回去一看,断网了,赶紧连热点,然后再扫码然后时间过来我日
点赞
送花
回复 分享
发布于 2020-03-08 16:31
在世真龙!
点赞
送花
回复 分享
发布于 2020-03-08 19:04

相关推荐

5 11 评论
分享
牛客网
牛客企业服务