我特别用cout << 1 << " "<< 2 ;来测试,结果连这个都超时和没有输出,看来是C++编译器的问题
但是,翻译成C后一次过,各位注意下。
顺便吐槽下,现在是C99标准了。。
另外这题不需要穷举,也不需要搞等差数列求和,线性算法有技巧。
等于,输出,继续往前加;
小于,加
大于,扔头扔到小为止,继续加
#include <stdio.h>
int main(void)
{
int num;
int sum = 0;
int start = 0;
scanf("%d",&num);
for(int i = 0;i <= num / 2 + 1;i++)
{
sum += i;
while(sum > num)
{
sum -= start;
start ++;
}
if(num == sum)
{
printf("%d %d\n",start,i);
}
}
return 0;
}
view sourceprint?01.#include <iostream>
02.using namespace std;
03.int main(void)
04.{
05.
int num;
06.
int sum = 0;
07.
int start = 0;
08.
cin >> num;
09.
for(int i = 0;i <= num / 2 + 1;i++)
10.
{
11.
sum += i;
12.
while(sum > num)
13.
{
14.
sum -= start;
15.
start ++;
16.
}
17.
if(num == sum)
18.
{
19.
cout << start << " " << i;
20.
cout << endl;
21.
}
22.
}
23.
return 0;
24.}