相关的整理
#include <iostream>
#include <cmath>
#include <iomanip>
#include <string>
using namespace std;
int main(void)
{
//cout<<fixed<<setprecision(2);
int N,m;
while(cin>>N>>m && N||m)
{
for(int n=sqrt(2*m);n>=1;n--)
{
int a=(m-((n-1)*n)/2)/n;
if(m==a*n+(n*(n-1))/2)
cout<<'['<<a<<','<<a+n-1<<']'<<endl;
}
cout<<endl;
}
return 0;
}
在这个做法中,最重要的就是判断其式子中能否除尽,计算过程中,要尽可能的减少使用除法。 还可以通过回带,看是否与原来相等。