SPOJ - LOCKER
https://vjudge.net/problem/45908/origin
暴力枚举2~10
2 2
3 3
4 2 2
5 2 3
6 3 3
7 2 2 3
8 2 3 3
9 3 3 3
发现是在没有1的情况下,3尽可能的多,其他用2补。
大于等于10的,可以由10以内的凑出来,就可以递推出去了
#include <iostream>
#include <cstdio>
#define p(a) putchar(a)
#define mod 1000000007
#define For(i,a,b) for(long long i=a;i<=b;++i) using namespace std;
long long T,n,x,y; long long ksm(long long a,long long b){
long long r=;
while(b>){
if(b&)
r=r*a%mod;
a=a*a%mod;
b>>=;
}
return r;
} int main(){
cin>>T;
while(T--){
cin>>n;
if(n<=)
cout<<n;
else
if(n%==)
cout<<ksm(,n/);
else
if((n-)%==)
cout<<*ksm(,(n-)/)%mod;
else
if((n-)%==)
cout<<*ksm(,(n-)/)%mod;
p('\n');
}
return ;
}