笔试时间:2024年05月20日
历史笔试传送门:2023秋招笔试合集
给定两个正整数x和p,要求从x中提取出所有的奇数位数字组成一个新数,然后将这个新数对p取模,并输出结果。
第一行输入正整数x,代表待处理的数字。
第二行输入正整数p,代表用于取模的数。
输出一个整数,代表新数对p取模的结果。
12332
12
1
说明:从12332中提取出奇数位数字组成新数133。133 % 12 = 1
遍历x的每一位,提取所有奇数位数字。将提取出的奇数位数字组成一个新数。将这个新数对p取模,输出结果。
C++:[此代码未进行大量数据的测试,仅供参考]
#include <iostream> #include <string> int solve(long long x, int p) { std::string s = std::to_string(x); std::string odd; // 提取奇数位数字组成新数 for (char c : s) { if ((c - '0') % 2 != 0) { odd += c; } } long long new_number = odd.empty() ? 0 : std::stoll(odd); // 计算新数对p取模的结果 int result = new_number % p; return result; } int main() { long long x; int p; std::cin >> x >> p; std::cout << solve(x, p) << std::endl; return 0; }
Java:[此代码未进行大量数据的测试,仅供参考]
import java.util.Scanner; public class Main { public static int solve(long x, int p) { String s = Long.toString(x); StringBuilder odd = new StringBuilder(); // 提取奇数位数字组成新数 for (char c : s.toCharArray()) { if ((c - '0') % 2 != 0) { odd.append(c); } } long new_number = odd.length() == 0 ? 0 : Long.parseLong(odd.toString()); // 计算新数对p取模的结果 int result = (int)(new_number % p); return result; } public static void main(String[] args) { Scanner scanner = new Scanner(System.in); long x = scanner.nextLong(); int p = scanner.nextInt(); System.out.println(solve(x, p)); scanner.close(); } }
Python:[此代码未进行大量数据的测试,仅供参考]
def solve(x, p): # 提取奇数位数字组成新数 odd = [digit for digit in str(x) if int(digit) % 2 != 0] if not odd: new_number = 0 else: new_number = int(''.join(odd)) # 计算新数对p取模的结果 result = new_number % p return result # 读取输入 x = int(input().strip()) p = int(input().strip()) # 计算并输出结果 print(solve(x, p))
给定一个正整数,要求通过重排这个整数的所有位数,使其成为一个素数。如果无解,请输出-1。否则输出任意一个合法解,代表重排后的素数。
输入一个正整数,代表待重排的正整数。
如果无解,请输出-1。 否则输出任意一个合法解,代表重排后的素数。
310
103
说明:不能输出13(013),因为包含了前导零。不能输出301,因为301=7*43,不是素数。
首先,生成所有数字的全排列。排除那些以0开头的排列。对于每个有效排列,判断其是否为素数。如果找到一个素数,输出这个素数并结束程序。如果没有找到任何素数,输出-1。
C++:[此代码未进行大量数据的测试,仅供参考]
#include <iostream> #include <vector> #include <algorithm> #include <string> #include <cmath> bool is_prime(int n) { if (n < 2) { return false; } for (int i = 2; i <= std::sqrt(n); ++i) { if (n % i == 0) { return false; } } return true; } void solve(std::vector<char> a) { std::sort(a.begin(), a.end()); do { if (a[0] != '0')