• Luogu P2312 解方程


    据大佬的说法这种大力乱搞题出在除NOIp以外的任何比赛都是很好的然而就是被出在了NOIp

    首先对于想直接上高精的同学,我还是祝你好运吧。

    我们考虑一个十分显然的性质,若(a=b),则对于任一自然数(k)都有(a mod k=b mod k)

    所以我们考虑一下把这个等式转换成膜意义下的。

    实际上就是对于那一个方程,我们取得一个值(x)时,计算其膜某个数的值,若为(0)则可以认定它有概率为正确的答案。

    那么取什么值呢,根据正常人的经验,我们取一个大质数可以比较合理的保证均衡。

    但是为了保证正确性,我们取两个值,同时也有一个小trick,这个具体看CODE吧。

    关于那个求多项式的就不用我说了吧,一个秦九昭算法套上去就好了

    CODE

    #include<cstdio>
    #include<cctype>
    using namespace std;
    const int N=105,M=1e6+5,p1=99991,p2=1e9+7;
    int a1[N],a2[N],n,m,ans[M],cnt; bool vis[M];
    inline char tc(void)
    {
        static char fl[100000],*A=fl,*B=fl;
        return A==B&&(B=(A=fl)+fread(fl,1,100000,stdin),A==B)?EOF:*A++;
    }
    inline void read(int &x)
    {
        x=0; char ch; while (!isdigit(ch=tc()));
        while (x=(x<<3)+(x<<1)+ch-'0',isdigit(ch=tc()));
    }
    inline void getnum(int id)
    {
        a1[id]=a2[id]=0; char ch; int flag=1; while (!isdigit(ch=tc())) flag=ch^'-'?1:-1;
        while (a1[id]=(10LL*a1[id]+ch-'0')%p1,a2[id]=(10LL*a2[id]+ch-'0')%p2,isdigit(ch=tc())); a1[id]*=flag; a2[id]*=flag; 
    }
    inline void write(int x)
    {
        if (x>9) write(x/10);
        putchar(x%10+'0');
    }
    inline bool check(int *a,int x,int mod)
    {
        register int i; int res=0;
        for (i=n;i>=0;--i)
        res=1LL*(res+a[i])*x%mod;
        return !res;
    }
    int main()
    {
        //freopen("CODE.in","r",stdin); freopen("CODE.out","w",stdout);
        register int i,j; read(n); read(m);
        for (i=0;i<=n;++i) getnum(i);
        for (i=1;i<=p1;++i)if (!vis[i])
        if (check(a1,i,p1)) for (j=i;j<=m;j+=p1) check(a2,j,p2)&&(vis[j]=1);
        for (i=1;i<=m;++i) vis[i]&&(ans[++cnt]=i);
        for (write(cnt),putchar('
    '),i=1;i<=cnt;++i)
        write(ans[i]),putchar('
    '); return 0;
    }
    
  • 相关阅读:
    小白的基金理财课
    Spring Security 入门原理及实战
    spring-data-rest的魔力 10分钟实现增删改查
    redis单点、redis主从、redis哨兵sentinel,redis集群cluster配置搭建与使用
    Netty开发redis客户端,Netty发送redis命令,netty解析redis消息
    使用Netty实现HTTP服务器
    Netty实现心跳机制
    SpringMVC是怎么工作的,SpringMVC的工作原理
    Netty 学习系列
    Mybatis 源码学习系列
  • 原文地址:https://www.cnblogs.com/cjjsb/p/9513425.html
Copyright © 2020-2023  润新知