笔试时间:2023年05月13日 暑期实习  第一题  题目:小美的整数  小美有两个数字,其中第一个数字是任意的正整数,第二个数字是一位仅可能为0到9间的整数。小美希望能将第二个插入第一个数字中,以得到最大的数字。具体可参见输入输出样例。  输入描述  单个测试用例包含T组数据  第一行一个数字表示T  对于每一组数据,包含一行有2个空格隔开的整数,表示任意正整数a和待插入的数字b。  1≤T≤10, 1≤a≤1050000, 0≤b≤9  输出描述  对于每组数据,输出一行,包括一个整数,得到的最大整数。  样例输入     4   76543 4   1 0   44 5   666 6    样例输出     765443   10   544   6666    参考题解  C++:  #include <iostream>#include <string>using namespace std;int main() {    int T;    cin >> T;    while (T--) {        int a, b;        cin >> a >> b;        string s = to_string(a);        for (int i = 0; i < s.length(); i++) {            if (s[i] - '0' < b) {                cout << s.substr(0, i) << b << s.substr(i) << endl;                break;            }        }        if (s.back() - '0' >= b) {            cout << s << b << endl;        }    }    return 0;}  Java:  import java.util.Scanner;public class Main {    public static void main(String[] args) {        Scanner scanner = new Scanner(System.in);        int T = scanner.nextInt();        while (T-- > 0) {            int a = scanner.nextInt();            int b = scanner.nextInt();            String s = Integer.toString(a);            for (int i = 0; i < s.length(); i++) {                if (s.charAt(i) - '0' < b) {                    System.out.println(s.substring(0, i) + b + s.substring(i));                    break;                }            }            if (s.charAt(s.length() - 1) - '0' >= b) {                System.out.println(s + b);            }        }    }}  Python:  T = int(input())def solv():    a, b = map(int, input().split(" "))    s = str(a)    for i in range(len(s)):        if int(s[i]) < b:            print(s[:i] + str(b) + s[i:])            return    print(s + str(b))for i in range(T):    solv()  第二题  题目:小美比赛  小美在参加送外卖比赛。比赛共有n个人参加,其中第 i 人的能力值为 i 。每个人有颜色黄或蓝。如果不同颜色对决,则能力大者赢。如果相同颜色对决,则能力小者赢。所有人都会两两比赛,请给出每个人能赢多少场。  输入描述  单个测试用例包含多组数据  第一行一个整数T,表示接下来有T组数据  对于每一组数据,包含两行数据,第一行是人数n。  第二行有n个数 ai(ai只会取0或1),0表示黄色,1表示蓝色。  数字间两两空格隔开。  1≤T≤5,1≤n≤50000,0≤ai≤1  输出描述  对于每组数据,输出一行,包括n个整数,每个整数表示每个人能赢多少场。  样例输入     2   3   0 0 1   4   1 0 1 0    样例输出     1 0 2   1 2 1 2    样例第一行为T,表示接下来有2组数据。其中第一组中,第一个人会赢第二个人,第三个人会赢前两个人,所以答案为1 0 2  参考题解  前缀和模拟即可。  C++:  #include <iostream>#include <vector>using namespace std;int main() {    int T;    cin >> T;    while (T--) {        int n;        cin >> n;        vector<int> colors(n);        for (int i = 0; i < n; i++) {            cin >> colors[i];        }        vector<int> pres0(n + 1, 0);        vector<int> pres1(n + 1, 0);        for (int i = 1; i <= n; i++) {            if (colors[i - 1] == 0) {                pres0[i] = pres0[i - 1] + 1;                pres1[i] = pres1[i - 1];            } else {                pres1[i] = pres1[i - 1] + 1;                pres0[i] = pres0[i - 1];            }        }        vector<int> res(n, 0);        for (int i = 0; i < n; i++) {            vector<int>& pre = (colors[i] == 0) ? pres0 : pres1;            vector<int>& opre = (colors[i] == 0) ? pres1 : pres0;            res[i] += opre[i];            res[i] += pre[n] - pre[i + 1];        }        for (int i = 0; i < n; i++) {            cout << res[i] << " ";        }        cout << endl;    }    return 0;}  Java:  import java.util.Scanner;public class Main {    public static void main(String[] args) {        Scanner scanner = new Scanner(System.in);        int T = scanner.nextInt();        while (T-- > 0) {            int n = scanner.nextInt();            int[] colors = new int[n];            for (int i = 0; i < n; i++) {                colors[i] = scanner.nextInt();            }            int[] pres0 = new int[n + 1];            int[] pres1 = new int[n + 1];            for (int i = 1; i <= n; i++) {                if (colors[i - 1] == 0) {                    pres0[i] = pres0[i - 1] + 1;                    pres1[i] = pres1[i - 1];                } else {                    pres1[i] = pres1[i - 1] + 1;                    pres0[i] = pres0[i - 1];                }            }            int[] res = new int[n];            for (int i = 0; i < n; i++) {               
点赞 0
评论 0
全部评论

相关推荐

03-10 14:19
已编辑
重庆邮电大学 前端工程师
球Offer上岸👑:测试也难求一面 逆天
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务