荣耀笔试 荣耀笔试题 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多种语言版本,持续更新中。