hdu 2058 The sum problem
2012-08-03 18:24
351 查看
点击打开链接
//这种题用暴力肯定会超时,题目的突破点就是相邻的值相差值是相等的,利用等差数列公式sum=a1*n+(n-1)*n/2
//知道到a1=1时,n是最大的,也就是sqrt(2*m),从最大的开始,每次减1,来求a1的值,a1=(sum/n)-(n-1)/2, 在把a1和n代进去,看是否相等
//这种题用暴力肯定会超时,题目的突破点就是相邻的值相差值是相等的,利用等差数列公式sum=a1*n+(n-1)*n/2
//知道到a1=1时,n是最大的,也就是sqrt(2*m),从最大的开始,每次减1,来求a1的值,a1=(sum/n)-(n-1)/2, 在把a1和n代进去,看是否相等
#include"stdio.h" #include"math.h" int main() { int n,m,a1,nn; while(scanf("%d%d",&n,&m)!=EOF&&(n||m)) { nn=(int)sqrt(2.0*m); while(nn) { a1=m/nn-(nn-1)/2; if(a1*nn+(nn-1)*nn/2==m) printf("[%d,%d]\n",a1,nn+a1-1); nn--; } printf("\n"); } return 0; }
相关文章推荐
- HDU 2058 The sum problem (数学+暴力)
- hdu 2058 The sum problem
- HDU 2058 The sum problem
- hdu 2058 The sum problem
- HDU 2058 The sum problem
- hdu 2058 The sum problem
- HDU 2058 The sum problem
- HDU 2058 The sum problem
- HDU 2058 The sum problem
- HDU 2058 The sum problem
- hdu 2058 The sum problem 枚举区间长度 + 等差公式
- The sum problem(hdu 2058)解题报告
- HDU——2058 The sum problem
- HDU 2058 The sum problem
- HDU 2058 The sum problem
- hdu 2058 The sum problem
- hdu 2058 The sum problem (数学问题)
- HDU 2058 The sum problem (等差数列求和变形)
- hdu 2058 The sum problem(数学题)
- hdu - 2058 The sum problem (数学题)