59 lines
968 B
C++
59 lines
968 B
C++
#include <iostream>
|
|
#include <cmath>
|
|
using namespace std;
|
|
int main()
|
|
{
|
|
int m;
|
|
cin>>m;
|
|
bool flag;
|
|
if(m%2==0) flag=true; //偶数需要偶数个连续加法
|
|
else flag=false; //奇数需要奇数个
|
|
int a[m]={-1};
|
|
int js=0;
|
|
for(int i=1;i<=m;i++) //题目优先分解质因数
|
|
{
|
|
if(m%i==0){
|
|
a[js]=i;
|
|
js++;
|
|
}
|
|
}
|
|
/*测试质因数 成功
|
|
for(int i=0;i<js;i++){
|
|
cout<<a[i]<<" ";
|
|
}
|
|
cout<<endl;
|
|
*/
|
|
int front=0,end=0;//首尾两项
|
|
if(flag==false)
|
|
{
|
|
for(int i=1;i<js-1;i++)
|
|
{
|
|
front=(m/a[i])-int(a[i]/2);
|
|
end=(m/a[i])+int(a[i]/2);
|
|
if(front>0 && end>0) cout<<front<<" "<<end<<endl;
|
|
}
|
|
}
|
|
double odd;
|
|
int mid=0;
|
|
if(flag==true)
|
|
{
|
|
for(int i=1;i<js-1;i++)
|
|
{
|
|
odd=m/(2*a[i]);
|
|
if(a[i]%2!=0){
|
|
front=m/a[i]-int(a[i]/2);
|
|
end=m/a[i]+int(a[i]/2);
|
|
if(front>0 && end>0) cout<<front<<" "<<end<<endl;
|
|
}
|
|
else
|
|
{
|
|
front=m/a[i]-int(a[i]/2);
|
|
end=m/a[i]+int(a[i]/2);
|
|
if(front>0 && end>0) cout<<front<<" "<<end<<endl;
|
|
}
|
|
|
|
}
|
|
}
|
|
return 0;
|
|
}
|