2020年全国高校计算机能力挑战赛C++初赛程序设计题1:Excel表列名称由字母A~Z组成,列字母的规律如下:A、B、C…Z、AA、AB…AZ、BA、BB…ZZZZY、ZZZZZ…
首先声明一下,我也是个菜鸟,如果大家有更好的方法和纠错请指正。
题目
Excel表列名称由字母A~Z组成,列字母的规律如下:
A、B、C…Z、AA、AB…AZ、BA、BB…ZZZZY、ZZZZZ…
输入:
输入包含两个列名称字符串,长度均小于等于5。
输出:
输出两个列名称之间共有多少列
样例输入:
AA AZ
样例输出:
24
代码
#include<iostream>
#include<string>
#include<cstdio>
#include<iomanip>
#include<cstdlib>
#include <algorithm>
#include<string.h>
#include<math.h>
using namespace std;
#define num unsigned long long
num len(string s) {
int n = s.length();
int sum = 0;
for (int i = 0; i < n; i++) {
sum *= 26;
sum += s[i] - 'A' + 1;
}
return sum;
}
int main()
{
string str1, str2;
cin >> str1 >> str2;
num sum1 = len(str1);
num sum2 = len(str2);
if (sum1 >= sum2) {
cout << (sum1 - sum2 - 1) << endl;
}else{
cout << (sum2 - sum1 - 1) << endl;
}
system("pause");
return 0;
}