TOJ 3504 Repeatless Numbers / 深搜

2024-06-15 12:18
文章标签 numbers toj 3504 repeatless

本文主要是介绍TOJ 3504 Repeatless Numbers / 深搜,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Repeatless Numbe

时间限制(普通/Java):1000MS/3000MS     运行内存限制:65536KByte
 

描述

Arepeatless number is a positive integer containing no repeated digits. For instance, the first 25 repeatless numbers are

1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 23, 24, 25, 26, 27, …

Given an integer n, your goal is to compute thenth repeatless number.

输入

The input test file will contain multiple test cases, each consisting of a single line containing the integern, where 1 ≤n ≤ 1000000. The end-of-file is marked by a test case withn = 0 and should not be processed.

输出

For each input case, the program should print the nth repeatless number on a single line.

样例输入

25
10000
0

样例输出

27
26057

#include <stdio.h>
int a[1000010];
int t = 0;
int map[10];
void dfs(int sum,int k,int flag)//flag=0是表示0可以无限用 flag=1表示0只能用一次 00000001 
{if(k == 8){a[t++] = sum;return;}if(t > 1000000)return;int i;for(i = 0; i < 10; i++){if(i == 0){if(!flag)//0000000就是这种情况 前面的0可以随便用 {dfs(0,k+1,0);}else//flag=1 你们说明 比如00000010最后这个0 只能用1次 {if(!map[i]){map[i]=1;dfs(sum*10+i,k+1,1);map[i]=0;}}}else{if(!map[i]){map[i]=1;dfs(sum*10+i,k+1,1);map[i]=0;}}}
}
int main()
{dfs(0,0,0);int n;while(scanf("%d",&n),n){printf("%d\n",a[n]);}return 0;
}


 

这篇关于TOJ 3504 Repeatless Numbers / 深搜的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1063431

相关文章

计蒜客 Half-consecutive Numbers 暴力打表找规律

The numbers 11, 33, 66, 1010, 1515, 2121, 2828, 3636, 4545 and t_i=\frac{1}{2}i(i+1)t​i​​=​2​​1​​i(i+1), are called half-consecutive. For given NN, find the smallest rr which is no smaller than NN

高精度打表-Factoring Large Numbers

求斐波那契数,不打表的话会超时,打表的话普通的高精度开不出来那么大的数组,不如一个int存8位,特殊处理一下,具体看代码 #include<stdio.h>#include<string.h>#define MAX_SIZE 5005#define LEN 150#define to 100000000/*一个int存8位*/int num[MAX_SIZE][LEN];void

leetcode#628. Maximum Product of Three Numbers

题目 Given an integer array, find three numbers whose product is maximum and output the maximum product. Example 1: Input: [1,2,3]Output: 6 Example 2: Input: [1,2,3,4]Output: 24 Note: The lengt

leetCode#448. Find All Numbers Disappeared in an Array

Description Given an array of integers where 1 ≤ a[i] ≤ n (n = size of array), some elements appear twice and others appear once. Find all the elements of [1, n] inclusive that do not appear in this

【TOJ】2248 Channel Design 最小树形图——朱刘算法

传送门:【TOJ】2248 Channel Design 题目大意:大概意思是需要从水库(编号始终为1)引水到所有的农场(编号2~n),通过m条水管引水直接或间接的得到水(即有边(1,2),(2,3),则说明3能间接的得到水),其中水管是单向的,且每条水管的铺设都需要一定的费用,问要从水库引水到所有的农场的最少花费。如果无解输出impossible。 题目分析:最小树形图模板题。

【codeforces】55D. Beautiful numbers 数位DP

传送门:【codeforces】55D. Beautiful numbers 题目分析:被每一位整除则用二进制记录已经包括的数字的个数,以及对2520取模后的状态。由于对5整除当且仅当最后一个数为0或5,对2整除当且仅当最后一个数为偶数,且1~9的最小公倍数为2520,不包括2,5后的最小公倍数为252,所以除最后一层对2520取模,其余时候都对252取模即可。由于整除的状态有限,最多只有

【SGU】113. Nearly prime numbers 合数分解

传送门:【SGU】113. Nearly prime numbers 题目分析:O(sqrt(N))。。 代码如下: #include <cstdio>#include <cstring>#include <iostream>#include <algorithm>using namespace std ;#define rep( i , a , b ) for

USACO Section 3.1 Humble Numbers

题意: 已知一个集合S  由S的任意子集作为因子  可构造出一个数字  求  这些构造出的数字中第k大的数字是多少 思路: 拿到这题就被“数字不是很多而且比较连续暴力枚举就好”这个思路迷惑了  果断TLE… 跪了一次后想到通过bfs构造可取  这时用了queue维护bfs  用priority_queue维护答案(大顶堆  内部最多k个数字)  用set判重复(5*2=2*5)  写

Sum of Square Numbers

Given a non-negative integer c, your task is to decide whether there're two integers a and b such that a2 + b2 = c. Example 1: Input: 5Output: TrueExplanation: 1 * 1 + 2 * 2 = 5 Example 2: Inpu

JavaScript - First step - Numbers and operators

Types of numbers Integers 整数Floating point numbers 单精度浮点数Doubles 双精度浮点数Binary 二进制Octal 八进制Hexadecimal 十六进制 Arithmetic operators 算术运算符 + 加法- 减法* 乘法/ 除法% 求余** 指数 (次方 5 ** 5 = 5 * 5 * 5 * 5 * 5) Oper