Run ID User Problem Result Memory Time Language Code Length Submit Time
6696511 kingpro 1032 Accepted 240K 0MS C++ 283B 2010-04-06 20:55:40

 

 

1 #include<iostream>
2  using namespace std;
3  int main()
4 {
5 int N=0, n=0, ss=5; cin>>N;
6 for(n=4; (ss+=n)<=N; n++);
7 for(int leave=N-ss+2, p=(leave>=0 ? 1 : 0), q=leave+(leave>=0 ? 0 : n-2), sep=p+n-q-1, x=n+p, i=2+p; i<x && (cout<<(i>sep ? i+1 : i)<<" ", true); i++);
8 return 0;
9 }

 

引用某博客:

最大的困难是读题,罗嗦了一大堆,其实就是一道找对于序列{ak},满足各元素互不相同,和为n,且该序列各项乘积最大.
容易得出满足条件序列的几个性质:
1.4>a1>1
2.a[i+1]-a[i]<=2(假设该序列按升序排列)
3.a[i+1]-a[2]=2的情况最多有1个
具体证明略.
由此可以轻松构造出该序列:
1.从2开始累加,直到和m大于等于n
2.j=m-n,把序列中的j划去(当j=1时,划去2并将最后一个元素加1)

 

说实话题目我也没有看懂...

只能看了别人的解题报告 自己实现下...郁闷

 

 posted on 2010-04-06 21:01  步碎酒散花醉  阅读(315)  评论(0)    收藏  举报