1715.txt

来自「北大ACM题目例程 详细的解答过程 程序实现 算法分析」· 文本 代码 · 共 57 行

TXT
57
字号

#include <stdio.h>
#include <algorithm>


char *digit = "FEDCBA9876543210"; //0123456789ABCDEF";
int p[8][8];
bool sign[16];

int main()
{
	int i,j,n,k;
	char ans[9];


	for( k=0; k<8; k++ )
	{
		p[k][7-k] = 1;
		for( i=6-k; i>=0; i-- )
			p[k][i] = p[k][i+1]*(15-i);
	}
	

	for( i=0; i<16; i++ )
		sign[i] = 0;

	scanf( "%d", &n );

	n -- ;
	for( k=0; n >= p[k][0]*15; k++ )
		n -= p[k][0]*15;

	int h;
	for( i=0; i<8-k; i++ )
	{
		h = n / p[k][i];
		for( j=0; j<16; j++ )
		if( !sign[j] )
		{
			if( !h )break;
			h--;
		}

		ans[i] = digit[j];
		sign[j] = 1;
		n %= p[k][i];
	}

	ans[i] = '\0';

	printf( "%s\n", ans );

	return 0;
}


⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?