荣耀笔试 荣耀笔试题 1008

笔试时间:2024年10月08日 秋招

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

第一题

题目

输入描述

输入包含多个用例。

每个用例将为包含两个整数N和L的一行。

N是可以作为id的部分的字符数,L是该语言支持的最大长度(1<=N<=65535,1 0<=L<=10^5),当N=0并且L等于0时表示输入结束。

输出描述

对每个用例输出一行ID的总数。

参考题解

直接运用快速幂思想,考虑到结果会很大超出所能承受的范围。翻译题目其实就是对base为N的数从1到L求幂之和并取模。

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

#include <iostream>
using namespace std;

const int MOD = 1000000007;

long long powerMode(long long base, long long exp) {
    long long res = 1;
    while(exp > 0) {
        if(exp % 2 == 1) {
            res = (res * base) % MOD;
        }
        base = (base * base) % MOD;
        exp /= 2;
    }
    return res;
}

int main() {
    int N, L;
    while(cin>> N>> L) {
        if(N == 0 && L == 0) {
            break;
        }
        long long res = 0;
        for(int i = 1; i <= L; i++) {
            res = (res + powerMode(N, i)) % MOD;
        }
        cout << res<< endl;
    }
}
// 64 位输出请用 printf("%lld")

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

import java.util.Scanner;

public class Main {
    private static final int MOD = 1000000007;

    public static long powerMode(long base, long exp) {
        long res = 1;
        while (exp > 0) {
            if (exp % 2 == 1) {
                res = (res * base) % MOD;
            }
            base = (base * base) % MOD;
            exp /= 2;
        }
        return res;
    }

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        while (true) {
            int N = scanner.nextInt();
            int L = scanner.nextInt();
            if (N == 0 && L == 0) {
                break;
            }
            long res = 0;
            for (int i = 1; i <= L; i++) {
                res = (res + powerMode(N, i)) % MOD;
            }
            System.out.println(res);
        }
        scanner.close();
    }
}

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

MOD = 1000000007

def power_mode(base, exp):
    res = 1
    while exp > 0:
        if exp % 2 == 1:
            res = (res * base) % MOD
        base = (base * base) % MOD
        exp //= 2
    return res

if __name__ == "__main__":
    while True:
        N, L = map(int, input().split())
        if N == 0 and L == 0:
            break
        res = 0
        for i in range(1, L + 1):
            res = (res + power_mode(N, i)) % MOD
        print(res)

第二题

题目

两个输入,第一个是复数的实部,第二个是复数的虚部,绝对值(打印出整数即可)

样例输入

7308

1839

样例输出

7536

参考题解

根据输入的实部(real)和虚部(fake),计算复数的模(即实部平方加虚部平方开根号),然后加上 0.5 进行四舍五入,最后输出结果。加上 0.5 是为了实现四舍五入,因为直接转换为整数会向下取整。

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

#include 

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

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

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

全部评论

相关推荐

不愿透露姓名的神秘牛友
10-30 10:56
已编辑
楼主学校前段时间开了三方,手里有oppo和BYD的offer,两家公司都逼签三方,所以我就都给拒了,上周一直处于手里没有offer的状态,整个人焦虑得已经要不行了。这周小米给了offer,南京小米汽车,开的价格和BYD差不多,我是山东人,南京离家近一些,我觉得至少这个offer是比BYD要好一些的。但是我还有好几家公司在泡池子,而且感觉开出来的offer应该也不比小米差,所以现在又开始焦虑要不要签小米了。小米给了两天的考虑时间,考虑完就发三方网签。我还有下面几个池子在泡:1.中电科十四所:九月份线下投简历-面试-笔试速通,然后网申了就没有消息了,上周去线下问了一下招聘的人,说是这周会有结果,但是今天都周三了,还是待审核的状态,很急。这也是我目前最想去的公司之一。2.荣耀:结构岗,深圳,听说开的非常高(肯定能比小米高不少),也是线下面试完之后秒入池子,貌似也是最近两周就开了。3.华为:深圳终端,这个就论外了,反正开的很晚也能等毁约,爱信等!4.联影医疗:上海,九月份三面完的,感觉个人发挥的还不错,貌似薪资不怎么高,好像到目前为止全国都还没有开奖的,也不晓得啥时候能开。5.韶音:深圳结构,二面完之后也是半个多月了,一直没有后续消息,听说今年韶音结构岗被投爆了,但是哥们真的很喜欢韶音的氛围和开的钱。6.新凯来:八月份就投了新凯来,但是今天才给我发笔试,hr说是系统bug了,提交了很多次都没发下来。7.远景科技:上海,一面通过,今天晚上二面。8.中元汇吉:通过了主管面,还要补一次笔试,但是看笔试题太恶心了,也不想做了,直接终止了流程。昨天接到小米的offer的想法是,这周时间内如果十四所和荣耀开了,就签这俩中的,没开的话就签小米,但是今天又想了想,觉得自己如果签了小米但是后面这俩公司又发了offer肯定会后悔死。秋招的人真是贪婪啊。更新:刚刚在荣耀秋招群里问了一下,深圳结构岗这周应该是开不出来了😭
虔诚的offer信徒:远景薪资一般,没小米高
点赞 评论 收藏
分享
点赞 1 评论
分享
牛客网
牛客企业服务