zoukankan      html  css  js  c++  java
  • poj 3734 Blocks【指数型生成函数】

    指数型生成函数,推一推可得:

    [(1+frac{x^1}{1!}+frac{x^2}{2!}+frac{x^3}{3!}+...)^2+(1+frac{x^2}{2!}+frac{x^4}{4!}+frac{x^6}{6!}+...)^2 ]

    [=e^{2x}+(frac{e^x+2^-x}{2})^2 ]

    [=e^{2x}+frac{e^{2x}+e^{-2x}+2}{4} ]

    [=frac{e^{4x}+2e^{2x}+1}{4} ]

    因为

    [e^x=sum_{i=0}^{inf}frac{x^i}{i!},e^{4x}=sum_{i=0}^{inf}frac{(4x)^i}{i!}=sum_{i=0}^{inf}frac{4^ix^i}{i!} ]

    所以展开可得

    [=frac{1}{4}+frac{sum_{i=0}^{inf}frac{4^ix^i}{i!}+2*sum_{i=0}^{inf}frac{2^ix^i}{i!}}{4} ]

    [=frac{1}{4}+frac{sum_{i=0}^{inf}(4^i+2^{i+1})*frac{x^i}{i!}}{4} ]

    前面的常数不用管,这样取i个的答案也就是第i项的系数就是( 4i+2{i+1} )

    #include<iostream>
    #include<cstdio>
    using namespace std;
    const int mod=10007;
    int T,n;
    int ksm(int a,int b)
    {
    	int r=1;
    	while(b)
    	{
    		if(b&1)
    			r=r*a%mod;
    		a=a*a%mod;
    		b>>=1;
    	}
    	return r;
    }
    int main()
    {
    	scanf("%d",&T);
    	while(T--)
    	{
    		scanf("%d",&n);
    		printf("%d
    ",(ksm(2,n-1)+ksm(4,n-1))%mod);
    	}
    	return 0;
    }
    
  • 相关阅读:
    2017 ICPC beijing E
    1629 B君的圆锥
    1298 圆与三角形
    通过String获取字符数组
    Java中的代码点与代码单元
    数据库事务隔离级别
    oracle修改密码、添加用户及授权
    Python起航
    软件测试常见概念
    TestNG--@Factory
  • 原文地址:https://www.cnblogs.com/lokiii/p/10018803.html
Copyright © 2011-2022 走看看