nyoj794纪念邮票

来源:互联网 发布:linux git 安装 编辑:程序博客网 时间:2024/05/22 13:08
这道题我做了几个月你信吗......今天终于ac了数学本来就博大精深了  又要灵活的运用的c上 突然发现脑子不够用了。。高中的等差数列a,a+1,a+2,....a+n;暂且把b=a+n;则2*s=(b-a+1)*(a+b);令x=b-a+1,y=a+b;解得a=(x+y-1)/2,b=(y-x+1)/2;然后x从1---sqrt(2*s),判断2*s能否整除x,如果能且x+y-1能被2整除,就得到了a,b的值。代码奉上:#include <stdio.h>#include <math.h>int main(){long long n,m,y,x;scanf("%lld %lld",&n,&m);for(x=sqrt(2*m);x>=1;x--){if(2*m%x==0){y=2*m/x;if((x+y-1)%2==0)printf("[%lld,%lld]\n",(y-x+1)/2,(x+y-1)/2);}}return 0;}

0 0