水题

P1147 连续自然数和

你这么能倒是去交个题解啊
by doby @ 2016-05-24 21:25:30


这么晒代码没什么用,带点注释交个题解吧
by doby @ 2016-05-24 21:27:48


就是就是赞同楼上 @[冯豫川555](/space/show?uid=10464) 还能加贡献点
by Deny_小田 @ 2016-05-25 19:23:42


赞同,加油。
by lzhcra @ 2016-05-25 19:56:44


整个题就是反向的一个等差数列求和 给出M,有等差数列求和公式得:设区间[x,y]上M=(x+y)\*(x-y+1)/2 顺便提一下 x-y+1 为自然数个数 化简得到 y方-y=x方+x-2\*M;进一步两边同时加一个1/4 可得 (y-1/2)方=(x+1/2)方-2\*M; 于是两边开方 有y=根号下((x+1/2)方-2\*M)+1/2; 那么我们就枚举x i=1;i<=M/2;i++ 因为至少是两个数相加所以枚举到一半即可; 可以算出每一个x对应的y 只需判断其是否为整数 如果是那么合题输出一组; 下面贴出代码: ```cpp #include<iostream> #include<cstring> #include<cstdio> #include<cmath> using namespace std; int m,x,y; bool can(double x)//判断是否为整数,就不讲了,应该能看懂 { if((int)x==x) return true; else return false; } int main() { scanf("%d",&m); double h; for(int i=1;i<=m/2;i++) //枚举x { h=sqrt(2*m+(i-0.5)*(i-0.5))-0.5; //这就是推出的公式 if(can(h)) printf("%d %d\n",i,(int)h); } return 0; } 希望有帮助!!!!233333333 ```
by 冯豫川555 @ 2016-05-26 18:59:35


至于没有提解,那是因为,那坑爹的审核没有过!!!!!!我也是醉勒鸟
by 冯豫川555 @ 2016-05-26 19:01:33


P党,看不懂………………
by DONGHANG @ 2016-08-10 07:46:38


+1
by Radium_ @ 2016-08-29 18:16:31


+2
by 龙尊下凡 @ 2016-11-21 21:51:17


666
by ljhhjr2000 @ 2016-11-22 11:16:02


| 下一页