金山云笔试

1.

int sum(vector<int>v,int index)
{
    if(index<v.size())
    return v[index]+sum(v,2*index+1)+sum(v,2*index+2);
    else return 0;
}
int main()
{
    //input  demo
    vector<vector<int>> v;
    int count;
    cin >> count;
    getchar();
    for (int i = 0; i < count; i++)
    {
        vector<int> temp;
        string str;
        getline(cin, str);
        stringstream ss;
        ss << str;
        string number;
        while (getline(ss, number, ' '))
        {
            temp.push_back(stoi(number));
        }
        v.push_back(temp);
    }
    //
    for (int k = 0; k < v.size(); k++)
    {
        int flag=0;
        for (int i = 0; i <= (v[k].size() / 2 - 1); i++)
        {
        if (sum(v[k], 2 * i + 1) == sum(v[k], 2 * i + 2))
        {
            cout << "Yes" << endl;
            flag=1;
            break;
        }
        }
        if(flag==0) cout<<"No"<<endl;
    }
}

2.出现5 的次数
#include <iostream>
#include <bits/stdc++.h>
using namespace std;
int count(int n, int x) {
    int cnt = 0, k;
    for (int i = 1;k = n / i;i *= 10) {
        // 高位的数字。
        int high = k / 10;
        if (x == 0) {
            if (high) {
                high--;
            } else {
                break;
            }
        }
        cnt += high * i;
        // 当前位的数字。
        int cur = k % 10;
        if (cur > x) {
            cnt += i;
        } else if (cur == x) {
            // n - k * i 为低位的数字。
            cnt += n - k * i + 1;
        }
    }
    return cnt;
}
int main()
{
    int x;
    cin>>x;
    cout<<count(x,5)<<endl;
}



#金山云##笔试题型#
全部评论
为啥我的两道编程题和你都不一样🤣
点赞 回复 分享
发布于 2020-09-24 22:44
第一题题目给的n范围 1<n<=1000   太坑了,实际样例有n=1(n输入数的个数)的情况。被恶心到了,加了n==1特判就AC了。 题目太坑了
点赞 回复 分享
发布于 2020-09-24 15:22
金山云面试楼主有没有面筋 测开岗 贼想要
点赞 回复 分享
发布于 2020-09-24 14:46
状态变成了笔试中,但是没有收到笔试链接呀。。
点赞 回复 分享
发布于 2020-09-24 14:40
职位测开,只AC第二道,第一道0%,不知道有木有面试机会😔
点赞 回复 分享
发布于 2020-09-24 10:42
也是输入输出
点赞 回复 分享
发布于 2020-09-24 09:19
今天用java写的,结果那个第一题输入输出一直搞不定?
点赞 回复 分享
发布于 2020-09-23 23:28
大佬,我这个一直只能通过9%,一直找不到错误,能指点一二吗。我的思路是从后往前递推,然后不等的时候把结果之和累加到最近的父节点上 public static String LREquals(ArrayList<Integer> list){     int len = list.size()-1;     int i = (len-1)/2;     for (; i >=0 ; i--) {         if (list.get(2*i+1) == list.get(2*i+2))return "Yes";         else {             int a = list.get(2*i+1) + list.get(2*i+2) + list.get(i);             list.set(i,a);         }     }     System.out.println(list.toString());     return "No"; }
点赞 回复 分享
发布于 2020-09-23 23:01

相关推荐

点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
08-08 18:20
职场水母:这题思路是什么,我目前想的一个暴力方法就是先把这个链表遍历一遍,用哈希表存储出现次数,然后再根据哈希表来一个一个删除节点,
点赞 评论 收藏
分享
用微笑面对困难:这里面最强的是驾驶证了,可以入职美团大厂,然后直接开启黄马褂人生
点赞 评论 收藏
分享
评论
5
9
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务