一个时间比较微妙的状压DP。用一个二进制状态表示0~k中哪些数已经可以被表示出来了,然后大于k的数直接乘,因为对状态不产生影响。　#include　#include　#include　using　namespace　std;#define　pow2(x)　(1=　mod)　\　_a_　%=　mod;　\}int　sov()　{　int　prv(0),　cur(1);　memset(f,　0,　sizeof(f));　va　=　max(0,　l　-　k)　+　1;　zu　=　pow2(k　+　1)　-　1;　f[cur][1]　=　1;　for　(int　ti　=　0;　ti　=　e;　--　i)　incm(ans,　f[cur][i]);　return　ans;}int　main()　{#ifndef　ONLINE_JUDGE　freopen("in.txt",　"r",　stdin);#endif　int　t;　scanf("%d",　&t);　while　(t　--)　{　scanf("%d%d%d",　&n,　&k,　&l);　printf("%d\n",　sov(include　#include　#include　using　namespace　std;struct　edge　{　int　t;　edge　*next;};const　int　maxn　=　70009;const　int　maxl　=　19;const　int　maxe　=　2000009;int　n,　ind[maxn],　oud[maxn],　tpo[maxn],　ath[maxn][maxl],　sz[maxn],　d[maxn];edge　*ha[maxn],　*hr[maxn],　*ht[maxn];inline　void　addEdge(edge**　head,　int　u,　int　v)　{　edge*　ep　=　new　edge;　ep->　t　=　v;　ep->　next　=　head[u];　head[u]　=　ep;}int　LCA(int　u,　int　v)　{　if　(d[u]　=　0;　--　i)　if　(d[ath[u][i]]　>=　d[v])　u　=　ath[u][i];　if　(u　==　v)　return　u;　for　(int　i　=　maxl　-　1;