L1-050 N 끝에서 두 번째 문자열 (15 분)

L1-050 N 끝에서 두 번째 문자열 (15 분)

전체 시퀀스를 증가 소문자가 이루어지는 문자열 연산 주어 시퀀스 내의 각 스트링은 하나의 단위에있어서, L (A)로부터 시작하여, L에 고정된다. 예를 들어, L (3), 시퀀스 {되면 AAA, AAB, AAC, ... AAZ, ABA, ABB, ... ABZ, ..., ZZZ}. 끝에서 두 번째 (27) 문자열의 순서는 zyz입니다. 주어진 L를 들어,이 문제는 해당 N 끝에서 두 번째 시퀀스 문자열을 제공 할 수 있어야합니다.

입력 형식 :

주어진 입력 행 개의 양의 정수의 L (2 ≤ L ≤ 6)과 N (5 ≤10)에서.

출력 형식 :

행의 끝에서 두 번째 N 문자열의 출력 순서에 대응. 주제는이 문자열이 존재하는지 확인합니다.

샘플 입력 :

3 7417

샘플 출력 :

pat

 

사고 : 16 진수 (26)는 'A'등 문자에 숫자를 0 대응을 적용한다. 자리의 수 '는'채우기에 충분하지 않은 경우입니다 구덩이는있다

#include<iostream>
#include<stack>
using namespace std;
int main(void){
	int L,N;
	scanf("%d%d",&L,&N);
	int t =1;
	for( int i=1;i<=L;i++){
		 t*=26;
	}    
	N = t-N; 
	stack<char> st;
	while( N ){ 
		t =  N%26;
	 	st.push('a'+t ); 
		N/=26;  
	}
	for( int i=1;i<=L-st.size();i++)
	     cout<<'a';
	while( !st.empty() ){
		 cout<<st.top();
		 st.pop();
	} 
	cout<<endl;
	return 0;
} 

 

게시 된 736 개 원래 기사 · 원 찬양 (123) ·은 80000 +를 볼

추천

출처blog.csdn.net/S_999999/article/details/103339846