题意是将一串数字转换成另一种形式。比如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. CCproxy 代理上网

    相信有些同学在工作过程中遇到过公司内网环境无法上网的情况,下面给大家介绍一下CCproxy代理上网的配置 场景:linux虚拟机通过CCproxy代理访问外网 环境:只能访问内网的linux环境,可以 ...

  2. 4 系统的 CPU 使用率很高,但为啥却找不到高 CPU的应用?

    上一节讲了 CPU 使用率是什么,并通过一个案例教你使用 top.vmstat.pidstat 等工具,排查高 CPU 使用率的进程,然后再使用 perf top 工具,定位应用内部函数的问题.不过就 ...

  3. linux环境下时区无法设置(UTC无法更改为CST)的问题解决

    在进行linux下修改时区的时候 总是修改不了 修改成 Asia/Shanghai  但是 时区总是 +0000 却不是想要的+0800 按照网上的方法 A方法:tzselect:执行tzselect ...

  4. 使用Python检测局域网内IP地址使用情况

    来源:https://www.cnblogs.com/donlin-zhang/p/6812675.html 在测试环境搭建的过程中,经常需要给服务器分配静态IP地址,由于不清楚当前局域网内部哪些IP ...

  5. STM32低功耗总结

    之前自己做过一个项目的低功耗大约11ua,那时总结下有几点: 1.外设时钟必须切换为内部时钟: 2.不用的外设全部关闭,要用再开就是了: 3.浮空引脚必须配置为下拉: 4.硬件上的上拉.下拉电阻切记不 ...

  6. 阿里云RDs 网络白名单 专用网络 经典网络

    云服务为了安全性总是有不同的安全规则,第一就是需要明白里面的网络类型   专有网络是您自己独有的云上私有网络.您可以完全掌控自己的专有网络,例如选择IP地址范围.配置路由表和网关等,您可以在自己定义的 ...

  7. OpenResty搭建高性能服务端

    OpenResty搭建高性能服务端   Socket编程 Linux Socket编程领域为了处理大量连接请求场景,需要使用非阻塞I/O和复用,select.poll.epoll是Linux API提 ...

  8. 用python调试Appium和雷电模拟器连接时出现Original error: Could not find 'adb.exe' in PATH

    用python调试Appium和雷电模拟器连接时出现Original error: Could not find 'adb.exe' in PATH 确定环境变量没错,用管理员启动Appium就不会出 ...

  9. 如何保证mq不丢消息

    1.消息的发送流程 一条消息从生产到被消费,将会经历3个阶段 生产阶段,Producer 新建消息,然后通过网络将消息投递给MQ Broker 存储阶段,消息将会存储在Broker端磁盘中 消费阶段, ...

  10. 3 Python相对路径地址的的一个问题

    构建程序xiaojie_test.py import os from xxx.yyy import test test() 同目录下构建一个目录xxx,并且目录中有/tmp/results/graph ...