zoukankan      html  css  js  c++  java
  • 【BZOJ4818】序列计数(动态规划,生成函数)

    【BZOJ4818】序列计数(生成函数)

    题面

    BZOJ

    题解

    显然是求一个多项式的若干次方,并且是循环卷积
    或者说他是一个(dp)也没有问题
    发现项数很少,直接暴力乘就行了((FFT)可能还慢一些)
    然后容斥减掉没有质数的就行了

    #include<iostream>
    #include<cstdio>
    #include<cstdlib>
    #include<cstring>
    #include<cmath>
    #include<algorithm>
    #include<set>
    #include<map>
    #include<vector>
    #include<queue>
    using namespace std;
    #define ll long long
    #define RG register
    #define MOD 20170408
    #define MAX 20000200
    inline int read()
    {
        int x=0,t=1;char ch=getchar();
        while((ch<'0'||ch>'9')&&ch!='-')ch=getchar();
        if(ch=='-')t=-1,ch=getchar();
        while(ch<='9'&&ch>='0')x=x*10+ch-48,ch=getchar();
        return x*t;
    }
    int n,m,p;
    int a[100],b[100],c[100];
    int ret[100];
    void add(int &x,int y){x+=y;if(x>=MOD)x-=MOD;}
    void Multi(int *a,int *b,int *c)
    {
    	for(int i=0;i<p;++i)ret[i]=0;
    	for(int i=0;i<p;++i)
    		for(int j=0;j<p;++j)
    			add(ret[(i+j)%p],1ll*a[i]*b[j]%MOD);
    	for(int i=0;i<p;++i)c[i]=ret[i];
    }
    void fpow(int *a,int b,int *s)
    {
    	for(int i=0;i<p;++i)s[i]=0;s[0]=1;
    	while(b){if(b&1)Multi(a,s,s);Multi(a,a,a);b>>=1;}
    }
    bool zs[MAX];
    int pri[MAX/10],tot=0;
    int main()
    {
    	n=read();m=read();p=read();
    	for(int i=0;i<p;++i)a[i]=m/p;
    	for(int i=1;i<=m%p;++i)a[i]++;
    	fpow(a,n,b);
    	for(int i=0;i<p;++i)a[i]=m/p;
    	for(int i=1;i<=m%p;++i)a[i]++;
    	for(int i=2;i<=m;++i)
    	{
    		if(!zs[i])pri[++tot]=i,a[i%p]--;
    		for(int j=1;j<=tot&&i*pri[j]<=m;++j)
    		{
    			zs[i*pri[j]]=true;
    			if(i%pri[j]==0)break;
    		}
    	}
    	fpow(a,n,c);add(b[0],MOD-c[0]);
    	printf("%d
    ",b[0]);
    	return 0;
    }
    
    
  • 相关阅读:
    C#中将dll汇入exe,并加壳
    很不错的在线格式转换网站
    Eclipse快捷键大全
    win7休眠的开启与关闭方法
    C#实现注册码
    Microsoft.CSharp.targets不存在解决方法
    数据库>SQL Server2005>第4季SQL从入门到提高>2SQL Server使用
    main函数名字写错,写成mian等等的错误提示
    CSS选择器
    斐波那契数的实现
  • 原文地址:https://www.cnblogs.com/cjyyb/p/9092573.html
Copyright © 2011-2022 走看看