HDU 2065 "红色病毒"问题 ——快速幂 生成函数
$A(x)=1+x^2/2!+x^4/4!...$
$A(x)=1+x^1/1!+x^2/2!...$
然后把生成函数弄出来。
暴力手算。
发现结论。
直接是$4^{n-1}+2^{n-1}$
然后快速幂。
#include <map> #include <cmath> #include <queue> #include <cstdio> #include <cstring> #include <iostream> #include <algorithm> using namespace std; #define F(i,j,k) for (int i=j;i<=k;++i) #define D(i,j,k) for (int i=j;i>=k;--i) #define ll long long #define mp make_pair #define ull unsigned long long #define md 100 int T,kas; ull n; int ksm(int a,ull b) { int ret=1; for (;b;b>>=1,a=a*a%md) if (b&1) ret=ret*a%md; return ret; } int main() { while(scanf("%d",&T)!=EOF&&T!=0) { kas=0; while (T--) { scanf("%llu",&n); printf("Case %d: %d\n",++kas,(ksm(4,n-1)+ksm(2,n-1))%md); } printf("\n"); } }