zoukankan      html  css  js  c++  java
  • 51 nod 1200 石子游戏V2 FWT

    放模板

    #include<bits/stdc++.h>
    #define N 100005
    using namespace std;
    const int p = 1000000007;
    int t,n,m,ni;
    int pw(int x,int y)
    {
    	int lst=1;
    	while(y)
    	{
    		if(y&1)lst=1LL*lst*x%p;
    		y>>=1;
    		x=1LL*x*x%p;
    	}
    	return lst;
    }
    int pr[N],su[N],tot,a[N];
    void shai()
    {
    	for(int i=2;i<=m;i++)
    	{
    		if(!pr[i])
    		{
    			su[++tot]=i;
    			pr[i]=i;
    		}
    		for(int j=1;j<=tot&&su[j]*i<=m&&su[j]<=pr[i];j++)
    		{
    			pr[su[j]*i]=su[j];
    		}
    	}
    	return ;
    }
    void FWT(int f)
    {
    	for(int i=1;i<n;i<<=1)
    	{
    		for(int j=0;j<n;j+=(i<<1))
    		{
    			for(int k=0;k<i;k++)
    			{
    				int x=a[j+k],y=a[j+k+i];
    				a[j+k]=1LL*(x+y)%p*f%p;
    				a[j+k+i]=1LL*(x-y+p)%p*f%p;
    			}
    		}
    	}
    	return ;
    }
    int main()
    {
    	m=50000;shai();
    	while(~scanf("%d%d",&t,&m))
    	{
    		memset(a,0,sizeof(a));
    		for(int i=1;i<=m;i++)if(pr[i]==i)a[i]=1;
    		int l=0;
    		n=1;ni=pw(2,p-2);
    		while(n<=m)n<<=1,l++;
    		FWT(1);
    		for(int i=0;i<n;i++)a[i]=pw(a[i],t);
    		FWT(ni);
    		printf("%d
    ",a[0]);
    	}
    	return 0;
    }
    

      

  • 相关阅读:
    MINA简单的介绍
    java classloader详解
    nginx 和 tomcat 组合搭建后端负载均衡
    nginx主要配置
    Mysql知识汇总笔记
    gradle 构建java工程
    决策树
    如何使用hadoop RPC机制
    PowerPoint插入公式快捷键
    C++基础
  • 原文地址:https://www.cnblogs.com/ezyzy/p/7068776.html
Copyright © 2011-2022 走看看