通过自己双手写出来的代码真的很有成就感
我们知道,在编程中,我们时常需要考虑到时间复杂度,特别是对于循环的部分。例如,
如果代码中出现
for(i=1;i<=n;i++) OP ;
那么做了n次OP运算,如果代码中出现
for(i=1;i<=n; i++)
for(j=i+1;j<=n; j++) OP;
那么做了n*(n-1)/2 次OP 操作。
现在给你已知有m层for循环操作,且每次for中变量的起始值是上一个变量的起始值+1(第一个变量的起始值是1),终止值都是一个输入的n,问最后OP有总共多少计算量。
输入格式:
有T组数据,T<=10000 (T=0时结束)。每组数据有两个整数m和n,0<m<=2000,0<n<=2000.
输出格式:
对于每组数据,输出一个值,表示总的计算量,也许这个数字很大,那么你只需要输出除1007留下的余数即可。
输入样例:
在这里给出一组输入。例如:
2
1 3
2 3
输出样例:
在这里给出相应的输出。例如:
3
3
#include <stdio.h>
#include <math.h>
int a[2010][2010];
int main()
{
int i, j, k;
int m, n;
int T;
int result ;
for(i = 1; i < 2010; i ++)
{
a[i][0] = 1;
a[i][i] = 1;
for(j = 1; j < i; j ++)
{
a[i][j] = (a[i - 1][j - 1] + a[i - 1][j]) % 1007;
}
}
scanf("%d", &T);
while(T --)
{
scanf("%d%d", &m, &n);
printf("%d\n", a[n][m]);
}
return 0;
}
如何做题的步骤来啦~
1.先定义变量
int i, j, k;
int m, n;
int T;
int result ;
2.终于通过啦