zoukankan      html  css  js  c++  java
  • NOIP2014 解方程

    70分的普通Hash。。。。。。

    #include <cstdio>
    #include <cstring>
    #include <algorithm>
    using namespace std;
    #define int long long
    #define mod 100000007
    char jy[66666];
    int n,m,a[666],s[66666],top;
    long long temp[666];
    signed main()
    {
        temp[0]=1;
        scanf("%lld%lld",&n,&m);
        for(int i=0;i<=n;i++){
            scanf("%s",jy);
            int len=strlen(jy),tmp=0,f=0;
            if(jy[0]=='-')f=1;
            else tmp=jy[0]-'0';
            for(int j=1;j<len;j++){
                tmp=(tmp*10+jy[j]-'0')%mod;
            }
            if(f)a[i]=-1*tmp;
            else a[i]=tmp;
        }
        for(int i=1;i<=m;i++){
            int ans=0;
            for(int j=1;j<=n;j++){
                temp[j]=(temp[j-1]*i)%mod;
            }
            for(int j=0;j<=n;j++){
                ans=(a[j]*temp[j]+ans)%mod;
            }
            if(ans==0)s[++top]=i;
        }
        printf("%lld
    ",top);
        for(int i=1;i<=top;i++){
            printf("%lld
    ",s[i]);
        }
    }

    100分的分块……

    // By Sirius_Ren
    #include <cstdio>
    #include <cstring>
    #include <algorithm>
    using namespace std;
    int n,m,p[6]={9931,9941,9949,9967,9743,9973},xi[111];
    char jy[11111];
    bool vis[11111],ans[1111111];
    int a[111][6],Ans;
    int main()
    {
        xi[0]=1;
        scanf("%d%d",&n,&m);
        for(int i=0;i<=n;i++){
            scanf("%s",jy);
            int len=strlen(jy),f=0;
            if(jy[0]=='-')f=1;
            for(int ii=0;ii<6;ii++){
                int temp=0;
                if(!f)temp=jy[0]-'0';
                for(int j=1;j<len;j++){
                    temp=(temp*10+jy[j]-'0')%p[ii];
                }
                if(f)a[i][ii]=-1*temp;
                else a[i][ii]=temp;
            }
        }
        for(int ii=0;ii<6;ii++){
            for(int i=1;i<p[ii];i++)
            {
                int t=0;
                for(int j=1;j<=n;j++){
                    xi[j]=(xi[j-1]*i)%p[ii];
                }
                for(int j=0;j<=n;j++){
                    t=(a[j][ii]*xi[j]+t)%p[ii];
                }
                if(t!=0)vis[i]=1;
            }
            for(int i=1;(i-1)*p[ii]<=m;i++){
                int temp=(i-1)*p[ii];
                for(int j=1;j<p[ii];j++){
                    ans[temp+j]|=vis[j];
                }
            }
            memset(vis,0,sizeof(vis));
        }
        for(int i=1;i<=m;i++){
            if(!ans[i])Ans++;
        }
        printf("%d
    ",Ans);
        for(int i=1;i<=m;i++){
            if(!ans[i])printf("%d
    ",i);
        }
    }

    这里写图片描述

  • 相关阅读:
    20145316许心远《Java学习笔记(第8版)》课程总结
    小棒组合第三周项目总结
    20145316《Java程序设计》第十周学习总结
    20145316第五次实验报告
    20145316《Java程序设计》第9周学习总结
    20145316第四次实验报告
    20145316 《Java程序设计》第8周学习总结
    MyBatis 的基本介绍及使用
    JPQL 的基本使用
    JPA API与注解
  • 原文地址:https://www.cnblogs.com/SiriusRen/p/6532312.html
Copyright © 2011-2022 走看看