哔哩哔哩笔试 哔哩哔哩笔试题 0420

笔试时间:2024年04月20日

历史笔试传送门:2023秋招笔试合集

第一题

题目:找牛牛

青牛小学一年一度的六一儿童节开始了。现在牛牛们围成一圈坐在草地上,为了方便,我们把牛牛们编号为牛1,牛2,牛3,牛n。其中牛1与牛2相邻,牛2与牛3相邻,牛n和牛1相邻。为了更好的安排接下来的活动,牛老师很好奇:从这些牛中选出几只相邻的牛,总共有多少种不同的方案?我们认为两个方案不同,当且仅当两种选法选出的牛个数不同或选出的牛的编号不完全相同。

输入描述

输入一个整数n,表示牛的个数。

输出描述

输出一个整数n,表示方案数。

说明

对于100%的数据,保证n≥1

对于10%的数据,保证n≤5

对于30%的数据,保证n ≤100

对于60%的数据,保证n≤1000

对于100%的数据,保证n≤10^9

样例输入一

2

样例输出一

3

解释:

环为1,2可以选择(1},{2},{1.2}

样例输入二

4

样例输出二

13

解释:

环为1,2,3,4可以选择(1}, {2, {3}, {4},{1,2}, {2,3}, {3, 4}, {4, 1},{1,2,3},{2,3,4},{3,4,1} {4,1,2}{1,2,3,4}共13种情况。

参考题解

模拟。观察问题,我们需要计算从n头牛中选出若干头相邻的牛的方案数。由于牛是围成一圈的,这意味着我们可以从任意一头牛开始数。

不特殊的方案:首先考虑所有的牛都不同时被选中的情况。在这种情况下,我们可以选择任意一头牛作为起点(有n种选择),然后选择从这头牛开始的任意连续数量的牛(1到n-1种选择,因为如果选择了n头,那就是特殊情况了)。因此,这部分的方案数为 (n *(n-1)。

特殊方案:所有的牛都被选中的情况。这是一个特殊的方案,因为不管从哪头牛开始数,选出的都是全部的牛。这种情况下只有1种方案。

总结方案数:将上述两种情况相加,得到的总方案数就是 n*(n-1)+1。

C++:[此代码未进行大量数据的测试,仅供参考]

#include <iostream>

int main() {
    int N;
    std::cin >> N;
    std::cout << N * (N - 1) + 1 << std::endl;
    return 0;
}

Java:[此代码未进行大量数据的测试,仅供参考]

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int N = scanner.nextInt();
        System.out.println(N * (N - 1) + 1);
        scanner.close();
    }
}

Python:[此代码未进行大量数据的测试,仅供参考]

import sys
N=int(input())
print(N*(N-1)+1)

第二题

题目:翻转字符串

给出一个长度为n的字符串s和一个整数k,现在请你依次按照i= 1,2,.....n-k+1的顺序求出以下操作得到的字符串将字符串s的第i个字符至第i+k- 1之间的所有

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

2024 BAT笔试合集 文章被收录于专栏

持续收录字节、腾讯、阿里、美团、美团、拼多多、华为等笔试题解,包含python、C++、Java多种语言版本,持续更新中。

全部评论
第一题,题目有点抽象
点赞 回复 分享
发布于 06-02 20:54 福建

相关推荐

不愿透露姓名的神秘牛友
昨天 20:55
阿里国际 Java工程师 2.7k*16.0
程序员猪皮:没有超过3k的,不太好选。春招再看看
点赞 评论 收藏
分享
点赞 评论 收藏
分享
2 6 评论
分享
牛客网
牛客企业服务