POJ 1016 Numbers That Count(水~)
来源:互联网 发布:钢窗 知乎 编辑:程序博客网 时间:2024/06/03 13:31
Description
每个数字串都可以被压缩成c1 d1 c2 d2 … cn dn的形式,如果一个串被压缩几次之后和自己相同则称之为self-inventorying,对于一个串n有三种情况:
1. n压缩1次就马上出现self-inventorying特性,即 n n n n n n n …..
2. n压缩j次后的数字串J出现self-inventorying特性,即 n A B C….H I J J J J J J J
3. n压缩j次后的数字串J,每再压缩K次,重新出现数字串J,即n A B… J ..K J ..K J..K J
其中K称为循环间隔,K>=2
现给出一个数字串,判断其属于以上哪一种
Input
多组用例,每组用例占一行为一长度不超过80的数字串,以-1结束输入
Output
对于每组用例,判断该串属于哪种情况
Sample Input
22
31123314
314213241519
21221314
111222234459
-1
Sample Output
22 is self-inventorying
31123314 is self-inventorying
314213241519 enters an inventory loop of length 2
21221314 is self-inventorying after 2 steps
111222234459 enters an inventory loop of length 2
Solution
水题
Code
#include<cstdio>#include<iostream>#include<algorithm>#include<cstring>using namespace std;#define maxn 111char s[22][maxn];void deal(char *s1,char *s2){ int len=strlen(s1),num[11],res=0; memset(num,0,sizeof(num)); for(int i=0;i<len;i++) num[s1[i]-'0']++; for(int i=0;i<10;i++) if(num[i]) { if(num[i]>9)s2[res++]=num[i]/10+'0',num[i]%=10; s2[res++]=num[i]+'0'; s2[res++]=i+'0'; } s2[res]='\0';}int main(){ while(~scanf("%s",s[0]),s[0][0]!='-') { int f1,f2,f3; f1=f2=f3=0; for(int i=1;i<=15;i++)deal(s[i-1],s[i]); if(!strcmp(s[0],s[1]))f1=1; if(!f1) { for(int i=1;i<15;i++) if(!strcmp(s[i],s[i+1])) { f2=i; break; } if(!f2) { for(int i=1;i<=15;i++) { for(int j=0;j<=i-2;j++) if(!strcmp(s[i],s[j])) { f3=i-j; break; } if(f3)break; } } } if(f1)printf("%s is self-inventorying\n",s[0]); else if(f2)printf("%s is self-inventorying after %d steps\n",s[0],f2); else if(f3)printf("%s enters an inventory loop of length %d\n",s[0],f3); else printf("%s can not be classified after 15 iterations\n",s[0]); } return 0;}
0 0
- POJ 1016 Numbers That Count(水~)
- POJ 1016 Numbers That Count
- POJ 1016 Numbers That Count
- poj 1016 Numbers That Count
- POJ 1016 Numbers That Count
- POJ 1016 Numbers That Count
- poj 1016 Numbers That Count
- POJ 1016 Numbers That Count
- [POJ][1016]Numbers That Count
- POJ 1016 - Numbers That Count
- POJ 1016 Numbers That Count
- POJ-1016 Numbers That Count
- POJ 1016: Numbers That Count
- POJ 1016--Numbers That Count
- poj 1016 Numbers That Count
- POJ 1016--Numbers That Count
- POJ-1016-Numbers That Count
- POJ 1016 Numbers That Count(字符串处理)
- GCD介绍
- VBA教程初级(二):数据结构
- 1901: Zju2112 Dynamic Rankings 整体二分
- Fragment的使用
- [MVC4]ASP.NET MVC4+EF5(Lambda/Linq)读取数据
- POJ 1016 Numbers That Count(水~)
- 浏览器JS文件缓存问题
- 获取Android手机短信中心号码
- hdoj The first place of 2^n 3215 (数学技巧&预处理)
- Tesseract-OCR 训练中文
- Android 日常开发总结的技术经验 60 条
- IOS多线程及队列的使用
- SPOJ 16549 QTREE6 - Query on a tree VI
- CSS 外边距(margin)重叠及防止方法