尺取法a掉
然而數學解法為
等差數列求和公式:
尺取瞎搞:
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int m;
int main(){
scanf("%d",&m);
int i=,j=,sum=;
while(i+j<m){
while(sum<m)j++,sum+=j;
while(sum>m)sum-=i,i++;
if(sum==m)printf("%d %d\n",i,j),j++,sum+=j;
}
if(i+j==m)printf("%d %d\n",i,j);
}
數學(題解
#include<bits/stdc++.h>
using namespace std;
int m;
int main(){
cin>>m;
for(int k1=sqrt(*m);k1>;k1--)//枚举k1(注意是k1>1而不是k1>=1)
if(*m%k1== && (k1+*m/k1)%){//如果K2是整数而且与K1一奇一偶
int k2=*m/k1;
cout<<(k2-k1+)/<<" "<<(k1+k2-)/<<endl;//输出答案
}
return ;
}