小 X 的密码破译

发布于 2019-04-18  833 次阅读


这里写图片描述

思路

对于每一个数我们都可以暴力求出来然后打在一个数组里面,然后按题意模拟就可以了。
但这里要注意每算一个数的时候都要进行一次取模,不然会爆long long

#include 
using namespace std;
#define p 11111111;
bool t[11111115];
__attribute__((optimize("O2")))
int main()
{

    int n,a,b,c;
    scanf("%d%d%d%d",&n,&a,&b,&c);
    for (int i=1;i<=n;i++)
    {
        long long j=0;
        j=(a*i)%p;
        j=(j*i)%p;
        long long k=(b*i)%p;
        j=(j+k)%p;
        j=(j+c)%p;
        j=j%p;
        t[j]=true;
    }

    long long x=0;
    long long ans=0;
    for (int i=0;i<=11111111;i++)
    {
        if (t[i]==true)
        {       

            x++;
            int l=(i*x)%p;
            ans=(l+ans)%p;
        }
    }

    printf("%I64d\n",ans);
    return 0;
}
]]>