2 条题解

  • 1

    #include <cstdio>
    #include <cstring>
    #include <cstdlib>
    #include <cmath>
    #include <algorithm>
    #define ll long long
    using namespace std;
    const int MOD1=15013;
    const int MOD2=30323;
    const int MOD3=15083;
    const int LIM=10033;
    char s[LIM];
    int n,m;
    int a1[103],a2[103],a3[103];
    int ans[1000033],acnt=0;
    int main()
    {
    scanf("%d%d",&n,&m);
    ll a,b,c;int len;
    bool flag;
    for(int i=0;i<=n;++i)
    {
    flag=0;
    scanf("%s",s);
    if(s[0]=='-') {
    flag=1;
    s[0]='0';
    }
    len=strlen(s);
    a=0;b=0;c=0;
    for(int j=0;j<len;++j)
    {
    a=(a*10+s[j]-'0')%MOD1;
    b=(b*10+s[j]-'0')%MOD2;
    c=(c*10+s[j]-'0')%MOD3;
    }
    if(flag){
    a1[i]=-a;
    a2[i]=-b;
    a3[i]=-c;
    }else{
    a1[i]=a;
    a2[i]=b;
    a3[i]=c;

    }
    }
    ll mi1,mi2,mi3;
    ll sum1,sum2,sum3;
    for(int i=1;i<=m;++i)
    {
    mi1=1,mi2=1,mi3=1;
    sum1=a1[0];
    sum2=a2[0];
    sum3=a3[0];
    for(int j=1;j<=n;++j)
    {
    mi1=mi1*i%MOD1;
    mi2=mi2*i%MOD2;
    mi3=mi3*i%MOD3;
    sum1+=a1[j]*mi1%MOD1;
    sum2+=a2[j]*mi2%MOD2;
    sum3+=a3[j]*mi3%MOD3;
    }
    sum1=(sum1+MOD1)%MOD1;
    sum2=(sum2+MOD2)%MOD2;
    sum3=(sum3+MOD3)%MOD3;
    if(sum1==0&&sum2==0&&sum3==0){
    ans[++acnt]=i;
    }
    }
    printf("%d\n",acnt);
    for(int i=1;i<=acnt;++i)
    {
    printf("%d\n",ans[i]);
    }
    return 0;
    }

  • 0
    #include <cstdio>
    #include <cstring>
    #include <cstdlib>
    #include <cmath>
    #include <algorithm>
    #define ll long long
    using namespace std;
    const int MOD1=15013;
    const int MOD2=30323;
    const int MOD3=15083;
    const int LIM=10033;
    char s[LIM];
    int n,m;
    int a1[103],a2[103],a3[103];
    int ans[1000033],acnt=0;
    int main()
    {
        scanf("%d%d",&n,&m);
        ll a,b,c;int len;
        bool flag;
        for(int i=0;i<=n;++i)
        {
            flag=0;
            scanf("%s",s);
            if(s[0]=='-') {
                flag=1;
                s[0]='0';
            }
            len=strlen(s);
            a=0;b=0;c=0;
            for(int j=0;j<len;++j)
            {
                a=(a*10+s[j]-'0')%MOD1;
                b=(b*10+s[j]-'0')%MOD2;
                c=(c*10+s[j]-'0')%MOD3;
            }
            if(flag){
                a1[i]=-a;
                a2[i]=-b;
                a3[i]=-c;
            }else{
                a1[i]=a;
                a2[i]=b;
                a3[i]=c;            
            }
        }
        ll mi1,mi2,mi3;
        ll sum1,sum2,sum3;
        for(int i=1;i<=m;++i)
        {
            mi1=1,mi2=1,mi3=1;
            sum1=a1[0];
            sum2=a2[0];
            sum3=a3[0];
            for(int j=1;j<=n;++j)
            {
                mi1=mi1*i%MOD1;
                mi2=mi2*i%MOD2;
                mi3=mi3*i%MOD3;
                sum1+=a1[j]*mi1%MOD1;
                sum2+=a2[j]*mi2%MOD2;
                sum3+=a3[j]*mi3%MOD3;
            }
            sum1=(sum1+MOD1)%MOD1;
            sum2=(sum2+MOD2)%MOD2;
            sum3=(sum3+MOD3)%MOD3;
            if(sum1==0&&sum2==0&&sum3==0){
                ans[++acnt]=i;
            }
        }
        printf("%d\n",acnt);
        for(int i=1;i<=acnt;++i)
        {
            printf("%d\n",ans[i]);
        }
        return 0;
    }
    
    
  • 1

信息

ID
1408
难度
9
分类
(无)
标签
递交数
5
已通过
5
通过率
100%
上传者