//1. system("pause"); 此命令只用于VS 即只限于winOS 非标准C++语句
//2. 没看懂你咋写的。。。
//3.题目给定的数字范围极大,注意for循环嵌套导致的超时问题
//下面是我随手写的个,超时了。稍微改进一下
#include
#include
using namespace std;
int main()
{
unsigned long n;
cin >> n;
unsigned long a = 0, p = 0;
for(int i = 0;i <= n;i++)
{
for(int j = 0; j <= n; j++){
long sum = i*(j+1) + (1+j)*j/2;;
if(sum > n)
break;
else if(sum == n){
a = i;
p = j+1;
break;
}
}
if(a != 0 && p != 0)
break;
}
cout << a << " " << p << endl;
return 0;
}
/*
N = 14
2 4
1、继续,0、结束 : 1
N = 199
1、继续,0、结束 : 1
N = 36
11 3
1、继续,0、结束 : 1
N = 96
31 3
1、继续,0、结束 : 0
请按任意键继续. . .
*/
#include
#include
using namespace std;
int main() {
long p,N,sum,start;
int i,an;
do {
cout << "N = ";
cin >> N;
for(p = N; p > 0; --p) {
start = p / 2;
sum = 0;
for(i = start; i > 0; --i) {
sum += i;
if(sum == N) {
cout << i << " " << start - i + 1 << endl;
goto lable;
}
}
}
lable: cout << "1、继续,0、结束 : ";
cin >> an;
}while(an == 1);
return 0;
}
不太明白算法功能,但是运行没错误,结果正确