题目描述
Excel表列名称由字母A~Z组成,列字母的规律如下:A、B、C…Z、AA、AB…AZ、BA、BB…ZZZZY、ZZZZZ…,现在请你计算2列之间含有多少列单元格。
输入说明
1行,用空格分分隔的2个字符串,分别表示列名称,字符串长度均小于等于5。
输出说明
1行,一个整数,表示两个列之间包含的列数。
输入样例
AA AZ
输出样例
24
算一下,A~Z共26个字母,A是第一列,AA是第27 = 1*26 +1列,AAA是27*26+1列,AAAA是第(27*26+1)*26列
当然这里要注意进制是26,所以数据会非常大,这里要用unsigned long long。然后用户不一定会先输小的在数大的,所以需要判断一下
#include<iostream>
#include<cstdio>
#include<iomanip>
#include<cstdlib>
#include <algorithm>
#include<string.h>
#include<math.h>
#define llu unsigned long long
using namespace std;
llu count(string a)
{
int len=a.length();
llu sum=0;
for(int i=0;i<len;i++){
sum*=26;
sum+=a[i]-'A'+1;
}
return sum;
}
int main()
{
//cout << fixed << setprecision(0);
//cout << setw(8) << setiosflags(ios::left);
string a,b;
cin >> a >> b ;
llu sum1=count(a);
llu sum2=count(b);
if(sum1>sum2) cout << sum1-sum2-1 << endl ;
else cout << sum2-sum1-1 << endl;
return 0;
}