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

    Description

    P

    Input

    Output

    Sample Input

    P

    Sample Output

    P

    题解:

      这个题目本来是很难的,但因为数据很水,所以就很容易水过去了。

      首先我们要使得f(x)==0,那么f(x)mod 任何数都必定是0,那么我们可以选择合适的质数,对f(x)取模,那么不包含这个质因子的所有所有数都会被我们排除,所以我们可以多尝试选出很多个质数进行检查,wa的几率就十分小了。

       然后为了算出f(x),我们必须写一个大整数取模,讲取模之后的预处理出来。然后可以用秦九韶算法来求表达式的值,这样复杂度就对了。

    代码:

    #include <cstdio>
    
    #include <iostream>
    
    #include <algorithm>
    
    #include <cstring>
    
    #include <cmath>
    
    #include <iostream>
    
    #include <vector>
    
    #define MAXN 101000
    
    #define MAXNm 1000000
    
    #define ll long long
    
    #define mod 100000000007
    
    using namespace std;
    
    char ch[MAXN];
    
    ll a[200];
    
    int ans[MAXNm],f[MAXNm],num=0,n,m;
    
     
    
    bool check(int x){
    
        ll sum=0;
    
        for(int i=n;i>=0;i--){
    
            sum=(sum*x+a[i])%mod;
    
        }
    
        if(sum==0) return 1;
    
        return 0;
    
    }
    
     
    
    void init(){
    
        scanf("%d%d",&n,&m);
    
        for(int i=0;i<=n;i++){
    
            scanf("%s",ch+1);int len=strlen(ch+1);
    
            for(int j=1;j<=len;j++){
    
                if(ch[j]==45) {f[i]=1;continue;}
    
                a[i]=(a[i]*10+ch[j]-'0')%mod;
    
            }
    
            if(f[i]==1) a[i]*=-1;
    
        }
    
        for(int x=1;x<=m;x++){
    
            if(check(x)) ans[++num]=x;
    
        }
    
        printf("%d
    ",num);
    
        for(int i=1;i<=num;i++) printf("%d
    ",ans[i]);
    
    }
    
     
    
    int main()
    
    {
    
        init();
    
        return 0;
    
    }
  • 相关阅读:
    Mysql常见索引介绍
    Mysql字段修饰符(约束)
    使用select和show命令查看mysql数据库系统信息
    Mysql5.7数据库介绍
    对Mysql数据表本身进行操作
    各种修改Mysql字符集
    Mysql的安全配置向导命令mysql_secure_installation
    firewalld介绍
    CentOS7使用yum安装mysql5.7
    利用ASP.NET一般处理程序动态生成Web图像(转)
  • 原文地址:https://www.cnblogs.com/renjianshige/p/7610550.html
Copyright © 2011-2022 走看看