哔哩哔哩2020秋招笔试真题

哔哩哔哩2020秋招笔试真题

1、连续整数求和

【题目描述】给定一个正整数N,试求有多少组连续正整数满足所有数字之和为N? (1<= N <= 10^9)

输入描述


5


输出描述


2


备注

解释: 5=5=2+3,共有两组连续整数([5],[2,3])求和后为5。

示例1

输入


5


输出


2


说明

5=5=2+3,共有两组连续整数([5],[2,3])求和后为5。

【解题思路】

直接枚举判断即可。

【参考代码】


#include <iostream>
using namespace std;
int consecutiveNumbersSum(int N) {
    int res = 1;
    int temp = 0;
    for (int n = 2; n < N; n++) {
        temp = temp + n - 1;
        if (temp >= N) {
            break;
        }
        if (temp % n == N % n) {
            res++;
        }
    }
    return res;
}
int main() {
    int n;
    cin >> n;
    cout << consecutiveNumbersSum(n);
    return 0;
}


2、复数乘法

【题目描述】输入两个表示复数的字符串,输出它们相乘的结果的字符串

复数字符串用a+bi表示(a,b为整数,i为虚数单位i2=1)

输入描述

两个表示复数的字符串

输出描述

两个数相乘的结果的字符串

示例1

输入


1+2i
2+1


输出


0+5i


说明

(1+2i)(2+i)=(2+i+4i+2i*i)=0+5i

示例2

输入


1+-2i
3+4i


输出


11+-2i


说明

(1+-2i)(3+4i)=(3+4i-6i-8i*i)=11+-2i

【解题思路】

模拟实现复数运算。

【参考代码】


#include <iostream>
#include <string>
using namespace std;
 
void par***plex(string c, int *r, int *v) {
    int p = 0, l = c.length();
    for (int i = 0; i < l; i++) {
        if (c[i] == '+') {
            p = i;
            break;
        }
    }
    *r = stoi(c.substr(0, p));
    *v = stoi(c.substr(p + 1, l - 1));
}
 
int main() {
    string a, b;
    cin >> a >> b;
    int r1, v1, r2, v2;
    par***plex(a, &r1, &v1);
    par***plex(b, &r2, &v2);
    int r = r1 * r2 - v1 * v2;
    int v = r1 * v2 + r2 * v1;
    cout << r << "+" << v << "i";
    return 0;
}


3、数组排成最小的数

【题目描述】输入一个正整数数组,将它们连接起来排成一个数,输出能排出的所有数字中最小的一个。

输入描述

一行输入,数组中的数字用逗号隔开。例如:
输入为:
32,231
则表示数组{32, 231}

输出描述

直接输出最小数字即可,如示例题目中,输出为:
23132

示例1

输入


32,231


输出


23132


【解题思路】

经典贪心。对所有字符串按照A+B<B+A的规则排序,然后按着拼接即可。

【参考代码】


#include <bits/stdc++.h>
 
int compare(const void *strNumber1, const void *strNumber2) {
    const int MaxNumberLength = 10;
    char *strCombine1 = new char[MaxNumberLength * 2 + 1];
    char *strCombine2 = new char[MaxNumberLength * 2 + 1];
 
    strcpy(strCombine1, *(const char **)strNumber1);
    strcat(strCombine1, *(const char **)strNumber2);
 
    strcpy(strCombine2, *(const char **)strNumber2);
    strcat(strCo

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

2021名企校招笔试真题-技术 文章被收录于专栏

&lt;p&gt; 本专刊由牛客官方团队打造,主要讲解名企校招技术岗位的笔试题。 内容中包含多个名企的笔试真题,附有题目思路及参考代码 本专刊购买后即可解锁所有章节,故不可以退换哦~ &lt;

全部评论
第五题中的dp[i][j]表示word1中前i个(包括i)要想和word2中前j个一样时最少操作次数
点赞 回复 分享
发布于 2020-09-04 17:26

相关推荐

10-09 22:05
666 C++
找到工作就狠狠玩CSGO:报联合国演讲,报电子烟设计与制造
点赞 评论 收藏
分享
11-27 17:08
已编辑
牛客_产品运营部_私域运营
腾讯 普通offer 24k~26k * 15,年包在36w~39w左右。
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务