博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Codeforce915C
阅读量:6440 次
发布时间:2019-06-23

本文共 1627 字,大约阅读时间需要 5 分钟。

C. Permute Digits
time limit per test
1 second
memory limit per test
256 megabytes
input
standard input
output
standard output

You are given two positive integer numbers a and b. Permute (change order) of the digits of a to construct maximal number not exceeding b. No number in input and/or output can start with the digit 0.

It is allowed to leave a as it is.

Input

The first line contains integer a (1 ≤ a ≤ 1018). The second line contains integer b (1 ≤ b ≤ 1018). Numbers don't have leading zeroes. It is guaranteed that answer exists.

Output

Print the maximum possible number that is a permutation of digits of a and is not greater than b. The answer can't have any leading zeroes. It is guaranteed that the answer exists.

The number in the output should have exactly the same length as number a. It should be a permutation of digits of a.

Examples
Input
123 222
Output
213
Input
3921 10000
Output
9321
Input
4940 5000
Output
4940 题意:给两个数a和b,可以打乱a每位数的顺序组成一个新的数c, 求满足c<=b的最大,保证结果一定存在。 分析:先求出a的每位数字,然后排个序,再dfs。
#include
#include
#include
using namespace std;int A[100],B[100],C[100],alen,blen;int vis[30],ans[30],K=-1;int cmp(int x,int y){
return x>y;}int f(int a[],long long x){ int len=0; while(x) { a[len++]=x%10; x/=10; } return len;}int dfs(int k)//k为当前构造到第k位数 { if(k==alen) return 1; int last=-1;//前一个数 for(int i=0;i
=0) { for(int i=0;i<=K;i++) printf("%d",ans[i]); for(int i=0;i
View Code

 

转载于:https://www.cnblogs.com/ACRykl/p/8311644.html

你可能感兴趣的文章
smb服务器配置过程遇到错误及解决
查看>>
java杂乱
查看>>
在Linux上安装Python3.6.1
查看>>
[基础]iOS 可视化编程(全系列)
查看>>
我的友情链接
查看>>
LVS之NAT模型配置实验
查看>>
nginx 报错 99: Cannot assign requested address
查看>>
几种流行的AJAX框架:jQuery,Mootools,Dojo,Ext JS的对比
查看>>
Socket-Client通信
查看>>
Maven搭建简单的SS项目
查看>>
#我要上首页# 新版博客首页来了,做明星博主还会远吗?
查看>>
PHP缓存技术
查看>>
关于SOCKET资源堆栈
查看>>
笔记 百度搜索
查看>>
控制台 - 网络管理之华为交换机 S系列端口限速
查看>>
我的友情链接
查看>>
linux为启动菜单加密码
查看>>
MySQL5.5编译方式安装实战
查看>>
细谈Ehcache页面缓存的使用
查看>>
GridView如何设置View的初始样式
查看>>