阿里云笔试 阿里云笔试题 0828

笔试时间:2025年8月28日

往年笔试合集:

2023春招秋招笔试合集

2024春招秋招笔试合集

第一题

给定一个非零整数 b,请你找到另外两个非零整数 a 和 c,使得满足以下条件:

a, b, c 互不相等;

-10¹² ≤ a, c ≤ 10¹²;

1/a + 1/b = 2/c 成立;

a + c = 2×b 成立。

如果答案存在,直接输出任意一对满足条件的 a 和 c;否则,输出 -1。

输入描述

每个测试文件均包含多组测试数据。

第一行输入一个整数 T(1≤T≤10⁵)代表数据组数。

接下来 T 行,每行输入一个整数 b(-10⁹≤b≤10⁹ 且 b≠0),表示给定的非零整数。

输出描述

对于每一组测试数据,新起一行输出结果。

如果存在满足条件的 a 和 c,输出两个非零整数 a 和 c(满足 -10¹²≤a, c≤10¹²);否则,输出 -1。

如果存在多个解决方案,输出任意一个即可。

样例输入

1

1

样例输出

-2 4

参考题解

C++:

#include <iostream>
#include <cmath>
using namespace std;

int main() {
    int t;
    cin >> t;
    
    while (t--) {
        long long b;
        cin >> b;
        
        long long a = -2 * b;
        long long c = 4 * b;
        
        // 检查条件:a, b, c互不相等且绝对值都在10^12范围内
        if (a != b && a != c && b != c && 
            abs(a) <= 1000000000000LL && 
            abs(c) <= 1000000000000LL) {
            cout << a << " " << c << endl;
        } else {
            cout << "-1" << endl;
        }
    }
    
    return 0;
}
    

Java:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class FindAC {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int t = Integer.parseInt(br.readLine().trim());
        
        for (int i = 0; i < t; i++) {
            long b = Long.parseLong(br.readLine().trim());
            long a = -2 * b;
            long c = 4 * b;
            
            // 检查条件:a, b, c互不相等且绝对值都在10^12范围内
            if (a != b && a != c && b != c && 
                Math.abs(a) <= 1000000000000L && 
                Math.abs(c) <= 1000000000000L) {
                System.out.println(a + " " + c);
            } else {
                System.out.println("-1");
            }
        }
    }
}
    

Python:

t = int(input().strip())
for _ in range(t):
    b = int(input().strip())
    
    # 根据数学推导:a = -2*b, c = 4*b
    a = -2 * b
    c = 4 * b
    
    # 检查条件:a, b, c 互不相等且都在范围内
    if a != b and a != c and b != c and abs(a) <= 10**12 and abs(c) <= 10**12:
        print(f"{a} {c}")
    else:
        print("-1")

第二题

题目要求:请实现一个Quadratic-Warm/Cubic-Cool(QWCC)学习率调度器。

算法描述:与常见linear warm-up+cosine decay不同,QWCC分四段并采用二次上升+三次下降。

给定超参数:

最大学习率 η_max

最小学习率 η_min

Warm-up步数

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

2025 春招笔试合集 文章被收录于专栏

2025打怪升级记录,大厂笔试合集 C++, Java, Python等多种语言做法集合指南

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务