| 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)
说实话题目我也没有看懂...
只能看了别人的解题报告 自己实现下...郁闷
Author: CriusWuBlog: http://kingpro.cnblogs.comContact: kingpro@live.cn
This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License.
posted on
浙公网安备 33010602011771号