• UOJ #20. 【NOIP2014】解方程


    已知多项式方程:

    a0+a1x+a2x2+...+anxn=0

    求这个方程在[1,m]内的整数解(n和m均为正整数)。

    输入格式

    第一行包含2个整数n、m,每两个整数之间用一个空格隔开。

    接下来的n+1行每行包含一个整数,依次为a0,a1,a2,...,an

    输出格式

    第一行输出方程在[1,m]内的整数解的个数。

    接下来每行一个整数,按照从小到大的顺序依次输出方程在[1,m]内的一个整数解。

    样例一

    input

    2 10
    1
    -2
    1
    

    output

    1
    1
    

    样例二

    input

    2 10
    2
    -3
    1
    

    output

    2
    1
    2
    

    样例三

    input

    2 10
    1
    3
    2
    

    output

    0
    

    限制与约定

    对于30%的数据,0<n2|ai|100an0m100

    对于50%的数据,0<n100|ai|10100an0m100;

    对于70%的数据,0<n100|ai|1010000an0an≠0,m10000

    对于100%的数据,0<n100|ai|1010000an0m1000000

    时间限制:1s

    内存限制:128MB

    下载

    样例数据下载

    题目链接:http://uoj.ac/problem/20

    解题报告:

    hash函数+RP,

    选一个性质较好的模数,存数据,算答案,模意义下是否为0.

    此题看脸,酋长退群吧.

    推荐mod=100000007.youyu

    选错了模数,怪我喽.

    由于常数巨巨大,据算多项式要用秦九韶算法

    https://baike.baidu.com/item/%E7%A7%A6%E4%B9%9D%E9%9F%B6%E7%AE%97%E6%B3%95/449196?fr=aladdin

    AC代码:

    #include<cstdio>
    #include<iostream>
    #include<cstring>
    #include<string>
    #include<cmath>
    #define ll long long
    #define MOD 100000007
    #define FOR(i,s,t) for(register ll i=s;i<=t;++i)
    using namespace std;
    ll n,m,cnt;
    ll a[151];
    ll ans[1000011];
    char c;
    inline ll read(){
    	ll w=1,data=0;
    	while(c=getchar(),c!='-'&&(c>'9'||c<'0'));
    	if(c=='-')
    		w=-1;
    	else
    		data=c-48;
    	while(c=getchar(),c>='0'&&c<='9')
    		data=((ll)(data<<1)+(data<<3)+c-48)%MOD;
    	return w==1?data:(MOD-data);
    }
    inline ll calc(int r){
    	ll ans=0,k=1;
    	ans=a[n];
    	for(register int i=n-1;i>=0;--i)
    		ans=((ll)(r*ans)+a[i])%MOD;
    	return ans;
    }
    int main(){
    	n=read();
    	m=read();
    	FOR(i,0,n)
    		a[i]=read();
    	FOR(i,1,m)
    		if(!calc(i))
    			ans[++cnt]=i;
    	printf("%d
    ",cnt);
    	FOR(i,1,cnt)
    		printf("%d
    ",ans[i]);
    	return 0;
    }
    

      

      

  • 相关阅读:
    内嵌汇编简介(转)
    binary hacks读数笔记(dlopen、dlsym、dlerror、dlclose)
    在Ubuntu 20.04 LTS Focal Fossa上安装Fail2ban
    如何在CentOS 8上安装和配置Fail2ban
    Linux中使用Head命令的7种方法
    如何在CentOS / RHEL上安装Nginx
    如何在Fedora 32/31/30上安装NVM?
    如何在Ubuntu 20.04 LTS Focal Fossa上安装WildFly?
    如何在CentOS 8上安装oVirt虚拟机管理器
    如何在CentOS 8上安装CentOS Web面板?
  • 原文地址:https://www.cnblogs.com/Stump/p/7702161.html
Copyright © 2020-2023  润新知