讨论 / C++,题目序号309,求大家看看我这代码哪里有问题
daniel48 2013-02-22 20:10:00
点我顶贴 收藏 删除
状态: Unaccepted

测评机: Xeond[6]

得分: 40分

提交日期: 2013-2-22 19:25:00

有效耗时: 344毫秒

测试结果1: 通过本测试点|有效耗时157ms

测试结果2: 通过本测试点|有效耗时46ms

测试结果3: 通过本测试点|有效耗时47ms

测试结果4: 选手程序运行超过时限

测试结果5: 通过本测试点|有效耗时94ms

测试结果6: 选手程序运行超过时限

测试结果7: 选手程序运行超过时限

测试结果8: 选手程序运行超过时限

测试结果9: 选手程序运行超过时限

测试结果10: 选手程序运行超过时限

提交代码:

#include<iostream>

using namespace std;

int main()

{

int a,i,j,l,p=0;

bool q=false;

cin>>a;

for(i=1;i<a;i++)

{

for(j=i;j<a;j++)

{

l=l+j;

if(l==a)

{

p=j;

for(j=i;j<p;j++)

{

cout<<j<<" ";

}

cout<<p;

q=true;

l=0;

cout<<endl;

break;

}

}

l=0;

}

if(q==false)

{

cout<<"NONE"<<endl;

}

return 0;

}

#1 Sfiction@2013-02-22 20:10:00
回复 删除
想法很朴素,代码没什么问题。

但是此题的N最大可能达到10^6,O(N^2)的算法必然超时。

实际上对于每个i你都可以用等差数列计算公式来看是否有对应的j,不用通过累加来判定。

查看更多回复
提交回复