CodeForces 618 A. Slime Combining【模拟】
来源:互联网 发布:淘宝网棉麻长裙 编辑:程序博客网 时间:2024/05/29 14:01
Your friend recently gave you some slimes for your birthday. You have n slimes all initially with value 1.
You are going to play a game with these slimes. Initially, you put a single slime by itself in a row. Then, you will add the other n - 1 slimes one by one. When you add a slime, you place it at the right of all already placed slimes. Then, while the last two slimes in the row have the same value v, you combine them together to create a slime with value v + 1.
You would like to see what the final state of the row is after you've added all n slimes. Please print the values of the slimes in the row from left to right.
The first line of the input will contain a single integer, n (1 ≤ n ≤ 100 000).
Output a single line with k integers, where k is the number of slimes in the row after you've finished the procedure described in the problem statement. The i-th of these numbers should be the value of the i-th slime from the left.
1
1
2
2
3
2 1
8
4
In the first sample, we only have a single slime with value 1. The final state of the board is just a single slime with value 1.
In the second sample, we perform the following steps:
Initially we place a single slime in a row by itself. Thus, row is initially 1.
Then, we will add another slime. The row is now 1 1. Since two rightmost slimes have the same values, we should replace these slimes with one with value 2. Thus, the final state of the board is 2.
In the third sample, after adding the first two slimes, our row is 2. After adding one more slime, the row becomes 2 1.
In the last sample, the steps look as follows:
- 1
- 2
- 2 1
- 3
- 3 1
- 3 2
- 3 2 1
- 4
题意:
在容器中两个相同大小的元素可以合并成型号大1的元素,每次往整个容器中加型号为1的元素,问n次后,输出容器中的元素的状态
题解:
完全模拟这个过程就可以了,注意栈的指针控制
#include<stdio.h>typedef long long ll;ll x[100005];int main(){ ll n; while(~scanf("%I64d",&n)) { ll top=-1,tp,ans=0; while(n--) { x[++top]=1;//top>0&& while(top>=0&&x[top]==x[top-1]) { ++x[top-1]; top--; } } printf("%I64d",x[0]); for(int i=1;i<=top;++i) { printf(" %I64d",x[i]); } printf("\n"); } return 0;}
- CodeForces 618 A. Slime Combining【模拟】
- CodeForces 618A:Slime Combining【模拟】
- Codeforces 618A Slime Combining 【模拟】
- CodeForces 618A-Slime Combining【模拟】
- Codeforces 618A Slime Combining
- Codeforces 618A - Slime Combining
- CodeForces 618A Slime Combining
- CodeForces 618A Slime Combining
- Codeforces 618 . A Slime Combining
- CodeForces 618 A. Slime Combining
- CodeForces 618 A. Slime Combining(水~)
- codeforces-618A-Slime Combining【位运算】
- 【CodeForces 618A】Slime Combining(水题)
- CodeForces - 618A Slime Combining (快速幂)
- A. Slime Combining
- Wunder Fund Round 2016 (Div. 1 + Div. 2 combined)-A. Slime Combining(模拟)
- codeforces Wunder Fund Round 2016 (Div. 1 + Div. 2 combined) A.Slime Combining
- Wunder Fund Round 2016 A. Slime Combining
- 多线程编程
- mybatis 的saveOrUpdate 实现
- long int strtol(const char *nptr, char **endptr, int base)
- STL 容器特点简单总结
- 计算机视觉Computer Vision-机器学习Machine Learning近年部分综述
- CodeForces 618 A. Slime Combining【模拟】
- MyBatis在insert插入操作时返回主键ID的配置
- Java中的迭代器
- VC++程序开机自动启动
- 解决用Asp.net Mvc 开发时出现glyphicons-halflings-regular.woff2 not found的问题
- OpenCV学习笔记资料大集锦
- hdu Dragon Balls 3635【并查集】
- react.js-07-组件点击
- 数据迁移脚本