UVa 263 - Number Chains
题目:给你一个数字n0。将它的每一个位的数字按递增排序生成数a,按递减排序生成数b,
新的数字为n1 = a-b,下次依照相同方法计算n1,知道出现循环,问计算了多少次。
分析:数论、模拟。直接模拟计算就可以,利用hash表判重。
说明:注意初始化。
#include <algorithm>
#include <iostream>
#include <cstdlib>
#include <cstring>
#include <cstdio>
#include <cmath> using namespace std; //hash
typedef struct hash_node
{
int path;
hash_node* next;
}hnode;
hnode* tabel[1002];
hnode nodeh[1002];
int hash_size; void hash_initial()
{
memset(tabel, 0, sizeof(tabel));
hash_size = 0;
} int hash_find(int s)
{
int v = s%1001;
for (hnode* p = tabel[v] ; p ; p = p->next)
if (p->path == s)
return 1;
nodeh[hash_size].next = tabel[v];
nodeh[hash_size].path = s;
tabel[v] = &nodeh[hash_size ++];
return 0;
}
//hash end int buf[11];
int number(int *a, int n)
{
int value = 0;
for (int i = 0 ; i < n ; ++ i) {
value *= 10;
value += a[i];
}
return value;
} int cmp1(int a, int b) { return a < b; }
int cmp2(int a, int b) { return a > b; } int main()
{
int n,count,sum,a,b;
while (~scanf("%d",&n) && n) {
printf("Original number was %d\n",n); hash_initial();
sum = 0;
do {
hash_find(n);
sum ++;
count = 0;
while (n) {
buf[count ++] = n%10;
n /= 10;
}
sort(buf, buf+count, cmp2);
a = number(buf, count);
sort(buf, buf+count, cmp1);
b = number(buf, count);
printf("%d - %d = %d\n",a,b,n = a-b);
}while (!hash_find(n));
printf("Chain length %d\n\n",sum);
}
return 0;
}
UVa 263 - Number Chains的更多相关文章
- UVA 1558 - Number Game(博弈dp)
UVA 1558 - Number Game 题目链接 题意:20之内的数字,每次能够选一个数字,然后它的倍数,还有其它已选数的倍数组合的数都不能再选,谁先不能选数谁就输了,问赢的方法 思路:利用dp ...
- uva 11885 - Number of Battlefields(矩阵高速幂)
题目连接:uva 11885 - Number of Battlefields 题目大意:给出周长p,问多少种形状的周长为p的,而且该图形的最小包围矩阵的周长也是p,不包含矩形. 解题思路:矩阵高速幂 ...
- UVA 10706 Number Sequence (找规律 + 打表 + 查找)
Problem B Number Sequence Input: standard input Output: standard output Time Limit: 1 second A singl ...
- uva 10706 Number Sequence(数学规律)
题目连接:10706 - Number Sequence 题目大意:有一个有0 ~ 9组成的序列,1 1 2 1 2 3 1 2 3 4 1 2 3 4 5 ....就是第一位为1. ...
- UVA 529 Addition Chains(迭代搜索)
Addition Chains An addition chain for n is an integer sequence with the following four propertie ...
- UVA 11885 - Number of Battlefields(斐波那契)
11885 - Number of Battlefields 题意:给周长.求能围成的战场数目.不包含矩形. 思路:详细的递推没递推出来,可是看了网上一个规律,假设包含矩形的答案应该是斐波那契数列(可 ...
- UVA 10006_Carmichael number
题意: N 为合数,对于任意一个在(1,N)之间的数满足 anmodn=a,则称N为Carmichael number,对于给定的N,判断是否为Carmichael number. 分析: 素数区间筛 ...
- UVA 12377 Number Coding --DFS
题意:给一串数字,第一个数是Num的话,要使后面的数字组成Num个数,而且为不降的,将这Num个数分配到9个素因子上作为指数,问能组成多少个不同的数 解法:dfs一遍,看后面的数字能组成Num个不降数 ...
- UVA 529 - Addition Chains,迭代加深搜索+剪枝
Description An addition chain for n is an integer sequence with the following four properties: a0 = ...
随机推荐
- 2CSS层叠规则(即引入CSS的三种不同方式的优先级)
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/stri ...
- UNIX环境高级编程--1
前期准备: 下载apue3源文件(从apuebook.com上),然后编译(make)之后,得到libapue.a动态链接文件(.o 就相当于windows里的obj文件 .a 是好多个.o合在一起, ...
- Spark SQL入门案例之人力资源系统数据处理
通过该案例,给出一个比较完整的.复杂的数据处理案例,同时给出案例的详细解析. 人力资源系统的管理内容组织结构图 1) 人力资源系统的数据库与表的构建. 2) 人力资源系统的数据的加载. 3) 人力资源 ...
- C#用Microsoft.Office.Interop.Word进行Word转PDF的问题
之前用Aspose.Word进行Word转PDF发现'\'这个字符会被转换成'¥'这样的错误,没办法只能换个方法了.下面是Microsoft.Office.Interop.Word转PDF的方法: p ...
- 使用WindowBuilder设计Swing程序
Swing程序表示Java的客户端窗体程序,除了通过手动编写代码的方式设计Swing程序之外,Eclipse中还提供了一种WindowBuilder工具,该工具是一种非常好用的Swing可视化开发工具 ...
- sql server 数据库跨服务器备份,复制监视器——快照代理,复制流程
在做数据库跨服务器复制时,查看复制监视器的快照代理,可以看到复制流程,具体如下: 初始化 连接发布服务器 设置服务器数据库兼容性级别 更新索引的统计信息 在生成快照时锁定已发布的表 复制快照数据(每个 ...
- VMware 11安装Mac OS X 10.10 及安装Mac Vmware Tools.
先上一张效果图兴奋一下,博主穷屌丝一个,只能通过虚拟黑苹果体验下高富帅的生活,感觉超爽的,废话不多说的,直接上图了! 目录: 1.安装所需软件下载: 2.Mac OS X10.10 安装基本步骤: 3 ...
- Codeforces_718A
A. Efim and Strange Grade time limit per test 1 second memory limit per test 256 megabytes input sta ...
- Mysql 在Linux下的安装
1.获取mysql源码 wget http://dev.mysql.com/get/Downloads/MySQL-5.5/mysql-5.5.49.tar.gz 3.添加mysql用户和用户组,创建 ...
- 阿里P8架构师详解Java性能调优策略
一.性能测试 Ⅰ.测试方法 微基准性能测试 可以精准定位到某个模块或者某个方法的性能问题,例如对比一个方法使用同步实现和非同步实现的性能差异 宏基准性能测试 宏基准性能测试是一个综合测试,需要考虑到测 ...