EXCEL - Bảng tính Excel

Link Sub: http://www.spoj.com/PTIT/problems/EXCEL/
Người Gửi: Dương Lee

  • Problem:

Trong Excel, các cột được đánh dấu theo các chữ cái. Cột đầu tiên là A, sau đó là B. Sau cột Z sẽ là  cột AA rồi AB. Sau cột AZ sẽ là cột BA… Tương tự như vậy, sau cột ZZ sẽ là cột AAA. Các hàng  thì sẽ được đánh số, bắt đầu từ 1.   
Hãy viết chương trình chuyển từ biểu diễn một ô theo thứ tự hàng và cột sang tọa độ trên bảng tính  Excel .

Input
Gồm nhiều bộ test, mỗi bộ có dạng RnCm trong đó n,m là các số nguyên mô tả vị trí  theo hàng và cột (1<=n,m<=300000000). Dòng cuối cùng ghi R0C0.
Output
Với mỗi bộ test, ghi ra giá trị biểu diễn trong bảng tính Excel.
Example:
Input
R1C1
R3C1
R1C3
R299999999C26
R52C52
R53C17576
R53C17602
R0C0
Output:
A1
A3
C1
Z299999999
AZ52
YYZ53
YZZ53

  • Solution:

Bài này để tránh lằng nhằng thì bạn nên đọc vào theo dạng: char-long-char-long. Như vậy sẽ get được hàng và cột (trong C++).
Sau khi có được R và C rồi:

- Chỉ số hàng chính là R rồi;
- Chỉ số cột chính là chuyển hệ cơ số 10 sang hệ cơ số 26:
+ 1->A

+ 2->B
...
+ 26->Z

  • Code:

C++:

https://ideone.com/GnmXiV
#include <iostream>
using namespace std;

string Column (long x)
{
    string tmp = "";
    char c;
    while (1)
    {
        if (x==0) break;
        x--;
        c = 'A' + x%26;
        tmp = c + tmp;
        x = x/26;
    }
    return tmp;
}

int main ()
{
    char tmp;
    long r, c;
    while (1)
    {
        cin>>tmp>>r>>tmp>>c;
        if (r==0 && c==0) break;
        cout<<Column(c)<<r<<endl;
    }
    return 0;
}

JAVA:

...

Python:

...

Share this

Related Posts

Previous
Next Post »