ZJ27. 字典序
描述
给定整数n和m, 将1到n的这n个整数按字典序排列之后, 求其中的第m个数。输入描述
输入仅包含两个整数n和m。输出描述
输出仅包括一行, 即所求排列中的第m个数字.示例1
输入:
11 4
输出:
2
C 解法, 执行用时: 1ms, 内存消耗: 352KB, 提交时间: 2020-09-04
#include<stdio.h> long min(long a, long b){ return a<b?a:b; } int main(){ long m,n; long result=1; long i,j,count=0; scanf("%ld %ld",&n,&m); m--; while(m){ count=0; i=result; j=i+1; while(i<=n){ count+=min(j,n+1)-i; i*=10; j*=10; } if(m<count){ result*=10; m--; } else{ m-=count; result++; } } printf("%ld",result); }
C 解法, 执行用时: 1ms, 内存消耗: 376KB, 提交时间: 2020-07-06
#include<stdio.h> long min(long a, long b){ return a<b?a:b; } int main(){ long m,n; long result=1; long i,j,count=0; scanf("%ld %ld",&n,&m); m--; while(m){ count=0; i=result; j=i+1; while(i<=n){ count+=min(j,n+1)-i; i*=10; j*=10; } if(m<count){ result*=10; m--; } else{ m-=count; result++; } } printf("%ld",result); }