HDU 1799
来源:互联网 发布:ms logo软件 编辑:程序博客网 时间:2024/05/21 23:37
Description
我们知道,在编程中,我们时常需要考虑到时间复杂度,特别是对于循环的部分。例如,
如果代码中出现
for(i=1;i<=n;i++) OP ;
那么做了n次OP运算,如果代码中出现
fori=1;i<=n; i++)
for(j=i+1;j<=n; j++) OP;
那么做了n*(n-1)/2 次OP 操作。
现在给你已知有m层for循环操作,且每次for中变量的起始值是上一个变量的起始值+1(第一个变量的起始值是1),终止值都是一个输入的n,问最后OP有总共多少计算量。
如果代码中出现
for(i=1;i<=n;i++) OP ;
那么做了n次OP运算,如果代码中出现
fori=1;i<=n; i++)
for(j=i+1;j<=n; j++) OP;
那么做了n*(n-1)/2 次OP 操作。
现在给你已知有m层for循环操作,且每次for中变量的起始值是上一个变量的起始值+1(第一个变量的起始值是1),终止值都是一个输入的n,问最后OP有总共多少计算量。
Input
有T组case,T<=10000。每个case有两个整数m和n,0<m<=2000,0<n<=2000.
Output
对于每个case,输出一个值,表示总的计算量,也许这个数字很大,那么你只需要输出除1007留下的余数即可。
Sample Input
21 32 3
Sample Output
33题意:n重循环,下一个循环的起始位置从上一个循环起始位置+1开始 。思路:循环次数实际上可以转化成组合数c(n,m)=c(n-1,m-1)+c(n-1,m)代码:#include<cstdio>using namespace std;int c[2010][2010];int main(){ int n,m; int T; for(int i=1;i<=2000;i++) { c[i][0]=1; c[i][1]=i%1007; } for(int i=2;i<=2000;i++) { for(int j=2;j<=2000;j++) c[i][j]=(c[i-1][j-1]%1007+c[i-1][j]%1007)%1007; } scanf("%d",&T); while(T--) { scanf("%d%d",&m,&n); printf("%d\n",c[n][m]); } return 0;}
1 0
- hdu 1799
- hdu 1799
- hdu-1799
- hdu 1799
- hdu 1799
- HDU 1799
- HDU 1799
- hdu 1799 循环多少次?
- HDU 1799 循环多少次?
- hdu 1799 循环多少次?
- HDU 1799 循环多少次?
- hdu 1799 循环多少次?
- hdu-1799-循环多少次?
- hdu-1799-循环多少次?
- hdu 1799 循环多少次?
- HDU 1799 循环多少次?
- hdu 1799 循环多少次?
- hdu 1799 循环多少次?
- hdu5326 树的子树节点个数 dfs
- OC中 static 与 const 的作用
- 终于搞定UIScrollView上的几个tableview和collection view之间切换的问题了
- hdoj3785寻找大富翁(优先队列)
- Leetcode# 66 Plus One
- HDU 1799
- APP设计标准干货
- NYOJ-开心的小明
- nyoj苹果
- 输入以逗号分隔的整数,如123,234,345,456,111等,并以回车结束输入
- hdu杭电1434 幸福列车【优先队列】
- HDOJ 1870 愚人节的礼物(水题)(栈练习)
- java用volatile或AtomicBoolean实现高效并发处理 (只初始化一次的功能要求)
- Android自定义表情键盘与输入法键盘冲突