题意是将一串数字转换成另一种形式。比如5553141转换成2个1,1个3,1个4,3个5,即21131435。1000000000000转换成12011。数字的个数是可能超过9个的。n个m,m是从小到大排序。

输出的结果又四种情况,建议判断的时候就按照题目的顺序进行判断,否则可能出错。第一种情况是进行一次变换后和原来的数字相同;第二种是进行j次后和原来数字相同;第三种是变换过程中形成了循环,比如70:
      

70是2循环,又最后3组数字可判断出;第四种情况是超过15次变换仍然找不出规律。

#include <iostream>
#include <cstdio>
#include <cstring>
#define MAX 85
using namespace std; char n[MAX];
int a[10]; int main()
{
freopen("in.txt","r",stdin);
while(1)
{
char str[16][MAX]= {0}; //先全部变换,将原始数字和变换后的都保存下来
memset(n,0,sizeof(n)); //初始化
scanf("%s",n);
if(n[0]=='-')
break;
strcpy(str[0],n);
for(int i=0; i<15; i++) //15次变换
{
memset(a,0,sizeof(a)); //初始化
for(int j=0; j<10; j++) //查找0~9每个数字,并保存至数字a[j]
for(int k=0; k<strlen(str[i]); k++)
{
if(str[i][k]==j+'0')
a[j]++;
}
for(int j=0,k=0; j<10; j++)
if(a[j]>=10) //这里的细节需要注意一下,个数大于或等于10,需要保存三位数
{
str[i+1][k]=a[j]/10+'0';
str[i+1][k+1]=a[j]%10+'0';
str[i+1][k+2]=j+'0';
k+=3;
}
else if(a[j]>0 && a[j]<10)
{
str[i+1][k]=a[j]+'0';
str[i+1][k+1]=j+'0';
k+=2;
}
}
bool flag=true;
if(strcmp(str[0],str[1])==0)
{
printf("%s is self-inventorying\n",str[0]);
flag=false;
}
if(flag)
for(int i=1; i<=15; i++)
if(strcmp(str[i],str[i+1])==0)
{
printf("%s is self-inventorying after %d steps\n",str[0],i);
flag=false;
break;
}
if(flag)
for(int i=13; i>=0; i--)
if(strcmp(str[15],str[i])==0)
{
printf("%s enters an inventory loop of length %d\n",str[0],15-i);
flag=false;
break;
}
if(flag)
printf("%s can not be classified after 15 iterations\n",str[0]);
}
return 0;
}

POJ 1016 Numbers That Count 不难,但要注意细节的更多相关文章

  1. poj 1016 Numbers That Count

    点击打开链接 Numbers That Count Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 17922   Accep ...

  2. POJ1016 Numbers That Count

    题目来源:http://poj.org/problem?id=1016 题目大意: 对一个非负整数定义一种运算(inventory):数这个数中各个数字出现的次数,然后按顺序记录下来.比如“55531 ...

  3. POJ 1016 模拟字符串

    Numbers That Count Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 20396   Accepted: 68 ...

  4. Numbers That Count POJ - 1016

    "Kronecker's Knumbers" is a little company that manufactures plastic digits for use in sig ...

  5. POJ 1016

    http://poj.org/problem?id=1016 一道字符串处理的题目,理解题意后注意细节就好. 题意:每一串数字 都可以写成 a1 b1 a2 b2 ....ai bi 其中ai是指bi ...

  6. B - Numbers That Count

    Description        "Kronecker's Knumbers" is a little company that manufactures plastic di ...

  7. poj Pseudoprime numbers 3641

    Pseudoprime numbers Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 10903   Accepted: 4 ...

  8. POJ Round Numbers(数位DP)

    题目大意: Round Number:  将一个整数转化为二进制数字后,(不含前导0) 要是0的个数 大于等于1的个数 则是 Round Number 问从L-R之中有多少个Round Number ...

  9. POJ Pseudoprime numbers( Miller-Rabin素数测试 )

    链接:传送门 题意:题目给出费马小定理:Fermat's theorem states that for any prime number p and for any integer a > 1 ...

随机推荐

  1. 强哥PHP学习笔记

    1.php的代码,必须放在.php的文件中,php代码必须写在<?php ?>之间. 2.//单行注释 /* 多行注释 */ 3.默认首页index.php index.html inde ...

  2. 050.Python前端jQuery

    一 jQuery是什么? jQuery由美国人John Resig创建,至今已吸引了来自世界各地的众多 javascript高手加入其team. jQuery是继prototype之后又一个优秀的Ja ...

  3. vue2路由之指定滑动位置scrollBehavior-(载转)

    看源码的时候看到这个属性: 新手自然不知道这个是什么东西了,查了下vue  API: https://router.vuejs.org/en/advanced/scroll-behavior.html ...

  4. HC-05底层驱动

    INT8U BT_INIT(const char * pNAME, INT32U BAUD, INT8U ROLE, INT32U PSWD) { INT8U OS_ERR = OS_ERR_NONE ...

  5. mysql基础之日志管理(查询日志、慢查询日志、错误日志、二进制日志、中继日志、事务日志)

    日志文件记录了MySQL数据库的各种类型的活动,MySQL数据库中常见的日志文件有 查询日志,慢查询日志,错误日志,二进制日志,中继日志 ,事务日志. 修改配置或者想要使配置永久生效需将内容写入配置文 ...

  6. 【JVM进阶之路】十三:类加载过程

    通过前面的学习,我们了解了Class文件的结构,在Class文件中描述的各类信息,最终都需要加载到虚拟机中之后才能被运行和使用. 接下来,我们开始学习JVM的类加载. 一个类从被加载到虚拟机内存中开始 ...

  7. 西门子 S7300 以太网模块连接组态王方法

    北京华科远创科技有限研发的远创智控ETH-YC模块,以太网通讯模块型号有MPI-ETH-YC01和PPI-ETH-YC01,适用于西门子S7-200/S7-300/S7-400.SMART S7-20 ...

  8. 【分布式】-- 微服务抽奖系统后台整合MyBatis-Plus

    1.整合MyBatis-Plus背景 [分布式]-- 基于Nacos.OpenFeign搭建的微服务抽奖系统后台小案例 本篇是基于上一篇博文微服务抽奖系统后台对持久层MyBatis进行更换,并整合My ...

  9. 使用vue-i18n实现中英文切换(内含动态属性的绑定)

    最近做学生管理系统,因为有国外的学生,所以要进行中英文切换,查了查Vue中使用vue-i18n插件能够实现网页的中英文切换,学习内容如下: 一.下载vue-i18n插件 npm install vue ...

  10. mongodb创建用户创建库分配权限

    use unionserver db.createUser({ user: "rshy",pwd: "root1234@......",customData:{ ...