One Chance To Be The God Of Chrysanthemum
来源:互联网 发布:盘石网络销售怎么样 编辑:程序博客网 时间:2024/05/19 04:03
One Chance To Be The God Of Chrysanthemum
Time Limit : 3000/1000ms (Java/Other) Memory Limit : 65535/32768K (Java/Other)
Total Submission(s) : 59 Accepted Submission(s) : 3
Font: Times New Roman | Verdana | Georgia
Font Size: ← →
Problem Description
Last week xysDavid had gone for an interview. The interviewer asked him a funny question. Here is it.
Given a number n, your mission is to find a set, that every number between 1 and n (inclusive) can be the sum of some elements in this set.
xysDavid seckilled it soon after reading the statement. If you can solve the problem too, xysDavid will accept you to be his apprentice, who can get the honorary title 'the god of chrysanthemum'.
Can you finish it?
Given a number n, your mission is to find a set, that every number between 1 and n (inclusive) can be the sum of some elements in this set.
xysDavid seckilled it soon after reading the statement. If you can solve the problem too, xysDavid will accept you to be his apprentice, who can get the honorary title 'the god of chrysanthemum'.
Can you finish it?
Input
There is a number T (1<=T<=50) in the first line, indicating the number of test cases.
There is a number n in each line. (1<=n<=10^18);
There is a number n in each line. (1<=n<=10^18);
Output
You should output "Case #D:" first, which "D" means the index of the test case.
Then output all the numbers in the set in one line in increasing order. Use one space to separate two numbers. Please note that no more spaces in the end of a line.
If there are multiple answers, output the one with smallest number of elements. If it is still a tie, output the one with the smallest lexicographical order.
The comparison between two sequences uses lexicographical ordering: first, the first two numbers are compared, and if they differ this determines the outcome of the comparison; if they are equal, the next two numbers are compared, and so on, until either sequence is exhausted. If all numbers of two sequences compare equal, the sequences are considered equal. If one sequence is an initial subsequence of the other, the shorted sequence is considered the smaller one.
Then output all the numbers in the set in one line in increasing order. Use one space to separate two numbers. Please note that no more spaces in the end of a line.
If there are multiple answers, output the one with smallest number of elements. If it is still a tie, output the one with the smallest lexicographical order.
The comparison between two sequences uses lexicographical ordering: first, the first two numbers are compared, and if they differ this determines the outcome of the comparison; if they are equal, the next two numbers are compared, and so on, until either sequence is exhausted. If all numbers of two sequences compare equal, the sequences are considered equal. If one sequence is an initial subsequence of the other, the shorted sequence is considered the smaller one.
Sample Input
213
Sample Output
Case #1:1Case #2:1 2
Source
华南师范大学2012年ACM程序设计竞赛(初赛+决赛无尽版)
二分的思想
题意是:得到一个集合,使1到n都能用该集合内的某些元素和来表示。如果求得的集合有多个,输出元素个数最少的一个,如果还是有,输出字典序最小的集合。
#include<iostream>#include<cstdio>#include<set>using namespace std;#define LL __int64set<LL> q;set<LL>::iterator it;LL solve(LL n) {if(n==1){q.insert(1);return 1;}else{LL a=solve(n>>1);//a以下的数都能表示 LL b=n-a;//剩下的数b while(q.count(b))//找到不重复的最小值 {b++;}q.insert(b);return b+a;//返回a+b以下都能表示 }}int main(){int t;int cnt=1;cin>>t;while(t--){LL n;cin>>n;q.clear();printf("Case #%d:\n",cnt++);solve(n);it=q.begin();printf("%I64d",*it);for(it++;it!=q.end();it++)printf(" %I64d",*it);cout<<endl;}return 0;}
- One Chance To Be The God Of Chrysanthemum
- To be the better one for programing
- Error parsing XML: prefix must not be bound to one of the reserved namespace names
- for the love of god
- Meeting with the management team is the best chance to ask for all kinds of resources
- The Making of God of War III
- Science Says This Is How to Make the Perfect First Impression You only get one chance for a first i
- function to count the number of "1" of one byte
- 夜之神--The God of tonight
- TaoSama Becomes the God of Stocks dp
- How should 50 red and 50 blue marbles be distributed between two jars so as to maximize the chance o
- (Pod造成的)One of the two will be used. Which one is undefined.
- One of the two will be used. Which one is undefined.
- How to get the value of one specified item
- How to get the tables of one schema?
- how to print the spend time of one function
- get the nsum of 'Fibonacci'from one to twenty
- what should you be as a programmer?To be the last one and become experienced!
- C#使用 Salt + Hash 来为密码加密
- new Date('2012-03-09')的各浏览器兼容性
- 润乾报表
- 网络流
- Web实现点击图片弹出上传文件窗口
- One Chance To Be The God Of Chrysanthemum
- SJTU->SE->ICS->LAB6 Malloc
- 常用调试工具gdb,dbx,valgrind介绍一
- POJ1637 Sightseeing tour 混合图判断欧拉回路
- 节选牛人模式6原则阐释
- __FUNCSIG__ __FUNCDNAME__ __FUNCTION__ __func__
- 【jiasuba】AutoRun Pro软件 令U盘全自动
- Linux命令及其全称(转)
- 数组与指针分析