남교배 역대 시험문제 Excel 주소

1685 단어 블루 브리지 컵
역대 문제 Excel 주소
시간 제한: 1.0s 메모리 제한: 256.0MB
    
문제 설명
Excel 셀의 주소는 열 번호를 알파벳으로 표시하는 흥미로운 것을 나타낸다.
예를 들면,
A는 첫 번째 열을 나타냅니다.
B는 두 번째 열을 나타냅니다.
Z는 26열을 나타냅니다.
AA는 27열을 나타냅니다.
AB는 28열을 나타내고,
BA는 53열을 나타내고,
  ....
물론 Excel의 최대 열 번호는 한계가 있기 때문에 전환하는 것은 어렵지 않다.
만약 우리가 이런 표현법을 일반화하고 싶다면, 매우 큰 숫자를 매우 긴 자모 서열로 바꿀 수 있습니까?
이 제목은 입력한 숫자에 대응하는 Excel 주소 표시 방식을 출력해야 한다는 것이다.
샘플 입력
26
샘플 출력
Z
샘플 입력
2054
샘플 출력
BZZ
데이터 규모 및 규약
우리는 입력한 정수 범위[12147483647]를 약정한다
최대 메모리 소비량(가상 머신 포함)<256M
CPU 소비량 <1000ms
"입력하십시오..."와 같이 인쇄하지 말고 요구 사항에 따라 엄격하게 출력하십시오.의 여분의 내용.
참고:
main 함수는 0을 되돌려야 합니다.
ANSI C/ANSI C++ 표준만 사용;
컴파일 환경이나 운영체제에 의존하는 특수 함수를 호출하지 마십시오.
모든 의존 함수는 원본 파일에 명확하게 #include
프로젝트 설정을 통해 자주 사용하는 헤더 파일을 생략할 수 없습니다.
프로그램을 제출할 때 원하는 언어 형식과 컴파일러 형식을 선택하십시오.
  ------------------------------
멍청하고 할 말이 있다.
이것은 약간 진법 관계와 같지만, 완전히 그렇지는 않다.꼴찌 2위는 1로 26, 꼴찌 3위는 1로 26*26인 것 같아요.
비뚤비뚤하게 할 말이 있다.
알파벳 서열에서 숫자를 돌리면 괜찮은데, 거꾸로 하면 좀 번거롭지만, 컴퓨터가 빨리 달린다.
사고방식: 시작 뒤에 둔하고 비뚤어지면 제시 작용이 있다. 예를 들어 규칙을 설명한다. 예를 들어 Z, 그러면 26, 예를 들어 53
26의 여유가 0이 아닌 경우 1차 여유가 1이면 A를 나타냅니다. 이때 26의 여유를 나누어야 합니까? 아니면 1이 여전히 A를 대표하기 때문에 AA입니다.
예를 들어 2054에서 처음에 26의 여유를 0으로 하면 마지막 문자가 Z이고 26 이후에 여유를 반복하는 작업을 제외하고는
그럼 비즈.
#include
using namespace std;
int main()
{
	int n;
	cin>>n;
	char c[100];
	int cnt = 0;
	while(n)
	{
		if(n%26 == 0)
		{
			c[cnt++] = 26+64;
			n /= 26;
			n --;
		}
		else
		{
			c[cnt++] = n%26 + 64;
			n /= 26;
		}
	}
	for(int i = cnt-1;i>=0;i--)
	cout<

좋은 웹페이지 즐겨찾기