1 solutions

  • 3
    @ 2024-5-24 20:23:41

    题意

    求一个公式,问在第几次出现重复(明摆着要使用去重数据结构)

    思路

    还是set大佬

    存储在set里面,判断是否重复

    代码

    注意要c++11(O2)!!!

    #include<iostream>
    #include<unordered_set>
    #define int long long
    using namespace std;
    int a,b,c;
    unordered_set<int>se;//要用这个
    signed main()
    {
        cin>>a>>b>>c;//输入
        int num=1;
        for(int i=1;i<2000000;i++)//范围为2000000
        {
            if(se.find(num)!=se.end())//找到重复
            {
                cout<<i-1;//输出
                return 0;//提前散花
            }
            se.emplace(num);//添加元素
            num=(a*num+num%b)%c;//计算元素
        }
        cout<<-1;//输出找不到
        return 0;//完结散花
    }
    
    • 1

    Information

    ID
    258
    Time
    1000ms
    Memory
    512MiB
    Difficulty
    8
    Tags
    (None)
    # Submissions
    101
    Accepted
    14
    Uploaded By