杭电(hdu)1106 排序
2015-08-23 19:50
344 查看
排序
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 42554 Accepted Submission(s): 12234
Problem Description
输入一行数字,如果我们把这行数字中的‘5’都看成空格,那么就得到一行用空格分割的若干非负整数(可能有些整数以‘0’开头,这些头部的‘0’应该被忽略掉,除非这个整数就是由若干个‘0’组成的,这时这个整数就是0)。
你的任务是:对这些分割得到的整数,依从小到大的顺序排序输出。
Input
输入包含多组测试用例,每组输入数据只有一行数字(数字之间没有空格),这行数字的长度不大于1000。
输入数据保证:分割得到的非负整数不会大于100000000;输入数据不可能全由‘5’组成。
Output
对于每个测试用例,输出分割得到的整数排序的结果,相邻的两个整数之间用一个空格分开,每组输出占一行。
Sample Input
0051231232050775
Sample Output
0 77 12312320
Source
POJ
具体功能通过程序来阐述:
int main() { char test1[] = "feng,ke,wei"; char *test2 = "feng,ke,wei"; char *p; p = strtok(test1, ","); while(p) { printf("%s\n", p); p = strtok(NULL, ","); } return 0; }运行结果:
feng
ke
wei
通过strtok()函数,来截取数字,strtok()包含在#include<cstring>的头文件中,具体实现代码如下:
#include <iostream> #include <cstdio> #include <cstring> #include <cmath> #include <set> using namespace std; multiset<int> ss; multiset<int>::iterator it; int main() { char s[1001]; char *p; while(gets(s)) { p = strtok(s,"5"); while(p) { int sum=0; for(int i=0,j=strlen(p)-1;i<=strlen(p)-1&&j>=0;i++,j--) { sum+=pow(10,j)*(p[i]-'0'); } ss.insert(sum); p=strtok(NULL, "5"); } it=ss.begin(); cout<<*it; it++; for(;it!=ss.end();it++) { cout<<" "<<*it; } cout<<endl; ss.clear(); } return 0; }
相关文章推荐
- java线 生产者和消费者
- 零基Github Page个人博客建立教程无限的自由流动
- 关于a different object with the same identifier value was already associated with the session错误的一种解决方法
- 用户管理命令
- C++多态
- 多线程操作同一个epoll fd同步
- 张国祥老师在宁波麒麟贸易集团公司北仑厂区讲授5S管理实战方法
- 总市值3862亿的创始人们在各阶段是怎么选女友的?
- 本地服务器网络连接配置
- UVA 10110
- annotation(注解) 解析与实例一
- org.hibernate.MappingException: Could not find a getter ...
- 【常用术语缩写】
- CAS票据验证失败一例
- 编写高质量代码改善C#程序的157个建议——建议138:事件和委托变量使用动词或形容词短语命名
- 简单卡尔曼滤波
- 张国祥老师在宁波麒麟贸易集团公司讲授三级流程设计方法
- 摘记
- HDU 1041
- Oracle数据库基础之字符串函数