1 条题解

  • 1
    @ 2025-9-22 15:18:33

    这题很简单,要求我们化简求值(不管原式有没有意义)下面式子(x,k0)(x,k≠0)

    $(\sqrt{|a|})^2×\frac{a}{|a|} ÷ k^x ÷ (k×114514^0)^{-x} + b^{114514} × [\sqrt{(\frac{1}{4})^{-1}} + \log_2 1- π×Π^{x^{114514x}}_{i=x,i≠0}0^x + 4e^{10} - 4 × 10^{10} - \sqrt{(Σ^{4×6^0}_{i = 4} i)}] \mod x - [-(\frac{|\frac{x}{|x|} × b|}{b×114514^0}) × \sqrt{b^2}]$

    我们就试试

    原式$=|a|×\frac{a}{|a|}÷1+b^{114514}×(2+0-0+40000000000-40000000000-2)-[-(\frac{|b|}{b})×|b|]$ =a+0+b=a+0+b =a+b=a+b

    amazing !原式竟然就是a+ba+b,我们很快就解决这题了!

    思考:我们该怎么求出a+ba+b的值

    如果暴力模拟,要花O(a+b)O(a+b)的复杂度,这是很不优秀的。

    我们可以用二分来优化!

    #include <bits/stdc++.h>
    using namespace std;
    
    int a, b;
    
    int main() {
        scanf("%d%d", &a, &b);
    	int L = -2e9 - 5, R = 2e9 + 5;
    	while (L + 1 < R) {
    		int M = (L + R) / 2;
    		if (M <= a + b)
    			L = M;
    		else
    			R = M;
    	}
    	printf("%d\n", L);
    	return 0;
    }
    

    amazing 啊,我们用O(log2(a+b))O(log_2(a+b))求出了a+ba+b

    有没有更简单更快的方法呢?当然有!C++其实是自带int加法的,是不是很好啊,我们就可以做到O(1)O(1)了!

    这是最终代码

    #include <bits/stdc++.h>
    using namespace std;
    
    int a,b;
    
    int main() {
        scanf("%d%d",&a,&b);
        printf("%d\n", a+b);
        return 0;
    }
    

    恭喜,我们通过了这道难关!希望大家在接下来的C++学习之旅中,能够一往无前!

    信息

    ID
    1
    时间
    1000ms
    内存
    64MiB
    难度
    9
    标签
    递交数
    7
    已通过
    6
    上传者