Advertisement

B. Plus and Multiply 构造分析

阅读量:

个人认为如果不靠猜测的话这道题要想很久才能解答出来吧?但是由于题目难度较大,在a的幂次上思考时经常会忘记这个点从而能够猜对答案。

下面看一下我怎么理清这题关系的。

题目指出该数源于数字1。其中包含两个关键参数:乘因子mu和加量a。
为了便于分析和简化计算过程, 我们先随机写出一个较为复杂的表达式: ((mu*(1+a)+a)mu +a)mu.
接下来对其进行展开化简:
mu^3 + mu^2
a + a
mu^2 + a*mu.
观察可知, 无论初始表达式多么复杂, 由于所有数值均源自基础数值1,
因此必然存在至少一项不含a参与运算的情况。
将此无a项移除之后, 结果要么为空, 要么仍含有与a相关联的项。

复制代码
    //
    // Created by SANZONG on 2021/7/14.
    //
    
    #include "bits/stdc++.h"
    #define int long long
    using namespace std;
    //int a[40000];
    signed main() {
    int T;
    cin >> T;
    while (T--)
    {
        int n,a,b;
        cin >> n >> a >> b;
        if (a == 1 || b == 1)
        {
            if ((n - 1) % b == 0) cout << "Yes" << endl;
            else
                cout << "No" << endl;
        } else{
            int t = 1;
            while (t <= n)
            {
                if ((n - t) % b == 0) {
                    cout << "Yes" << endl;
                    break;
                }
                t *= a;
            }
            if ( t > n) cout << "No" << endl;
        }
    }
    }

全部评论 (0)

还没有任何评论哟~