1 条题解

  • 0
    @ 2025-8-24 22:56:13

    自动搬运

    查看原文

    来自洛谷,原作者为

    avatar Mortidesperatslav
    岂不日戒,玁狁孔棘。

    搬运于2025-08-24 22:56:13,当前版本为作者最后更新于2024-03-19 17:46:13,作者可能在搬运后再次修改,您可在原文处查看最新版

    自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多

    以下是正文


    不懂为什么都写那么长。

    a>1a > 1,则 axbax-b 的值为 x+(a1)xbx + (a-1)x-b,如果把 xx 换成更大的数,增量更大,反之亦然。

    于是特判 a=1a=1,否则因为要做乘法,是指数爆炸,直接模拟。单次复杂度 logx\log x

    具体见代码。

    
    #include<bits/stdc++.h>
    #define int long long
    using namespace std;
    int t, x, a, b;
    signed main(){
    	ios::sync_with_stdio(false);
    	cin.tie(0);cout.tie(0);
    	cin >> t;
    	while (t--){
    		cin >> x >> a >> b;
    		if (a == 1){
    			if (b == 0){//这时变换多少次都是 x
    				cout << x << "\n";
    				continue;
    			}
    			cout << x % b - b << "\n";//因为 x 每次 -b,减到负数就停了
    			continue;
    		}
    		while (a * x - b < x && x >= 0)
    			x = a * x - b; //模拟
    		cout << x << "\n";
    	}
    }
    
    • 1

    信息

    ID
    9216
    时间
    1000ms
    内存
    512MiB
    难度
    3
    标签
    递交数
    0
    已通过
    0
    上传者