问题描述:还记得正在努力脱团的小A吗?在他绘制贤者法阵时,他曾经最亲密的战友,暗中设下鬼打墙将小A围困,并准备破坏
小A正在绘制的法阵。小A非常着急。想阻止他的行动。而要阻止他,必须先破解鬼打墙。
哎,你不得不再次帮助他,告诉他在鬼打墙内应该走多少步。才能打破所有for循环。
问题分析:可以利用杨辉三角:1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
........
1 a[i-1][j]+a[i-1][j] ...............1
先打表,应该不会超时了。
1 #include "cstdio" 2 __int64 a[2004][2004]; 3 void abegin() 4 { 5 for (int i=0;i<=2003;i++) 6 for (int j=0;j<=2003;j++) 7 a[i][j] = 0; 8 for (int i=1;i<=2003;i++) 9 { 10 a[i][i] = 1; 11 if (i != 1) 12 for (int j=1;j<=i;j++) 13 a[i][j] = (a[i-1][j] +a[i-1][j-1])%1007; 14 } 15 } 16 int main() 17 { 18 int t,n,m; 19 scanf ("%d",&t); 20 abegin(); 21 while (t-- && scanf ("%d%d",&m,&n)) 22 { 23 printf ("%d\n",a[n+1][m+1]); 24 } 25 return 0; 26 }
时间: 2024-10-15 17:54:31