1 条题解

  • 0
    @ 2025-11-15 20:16:35

    题目逻辑分析

    完全理解题意后,可知V''只有一个元素,则后续再进行操作时不会再进行相乘取余操作。

    核心问题

    假设第一次得到的V''中元素为x,则x需满足什么条件,下一次才能得到相同的数?

    • 结论:仅当x为0、1、2时可能满足。
    • 验证:
      • x=3:下一次计算结果为3×3-3=6;
      • x=4:下一次计算结果为4×4-4=12(数值持续增大);
      • 规律:当x≥3时,后续结果会不断变大,无法回到原数。即 f(x)=x²-x 的图像.

    最终推导

    循环第一遍后,若得到的数≤2,则有解(其实x只能=0/2,可自行推导原因);若得到的数>2,则无解。

    附AC码(抱歉,上一版代码粘错了):

    #include <iostream>
    #include <vector>
    #define int long long
    using namespace std;
    
    signed main() {
        int t;
        cin >> t;
        while(t--){
            int n;
            cin >> n;
            int key1=0;
            int key2=0;
            bool key=1;
            vector<int>ai(n);
            for(int i=0;i<n;i++){
                cin >> ai[i];
            }
            if(n==1){
                if(ai[0]>2){
                    cout << "No" << endl;
                }else if(ai[0]==1){
                    cout << "Yes " << 0 << endl;
                }else if(ai[0]==2){
                    cout << "Yes " << 2 << endl;
                }
                continue;
            }
            for(int i=0;i<n-1;i++){
                int vis=((ai[i]%10)*(ai[i+1]%10))%10;
                if(vis>2){
                    key=0;
                }else if(vis==2){
                    key2++;
                }
            }    
            if(key==0||key2>1){
                cout << "No" << endl;
            }else{
                cout << "Yes " << key2*2 << endl;
            }
        }
        return 0;
    }
    
    • 1

    多维向量的嵌套映射和特征值提取

    信息

    ID
    1201
    时间
    1000ms
    内存
    256MiB
    难度
    8
    标签
    (无)
    递交数
    68
    已通过
    10
    上传者