codeforces 1B Spreadsheets 解题报告
题目大意:
用26个大写字母A~Z代表1~26,例如A是1,B是2,Z是26,AA是27;
由于没有代表0的字母,因此就有例如AAAA!=0.5*BAAA;因为AAAA=26^3+26^2+26+1,而BAAA=2*26^3+26^2+26+1;
因此先求出n的位数m,然后构造出AA..A(m个A),然后在每个位置上取最大值。
代码:
#include <iostream> #include <cstdlib> #include <cstdio> #include <algorithm> #include <cstring> using namespace std; int n; char s[20]; char ans[20]; int sum[20],f[20]; void convert(int col); int main() { cin>>n; sum[0]=f[0]=1; for(int i=1;i<20;i++) { f[i]=26*f[i-1]; sum[i]=sum[i-1]+f[i]; if(sum[i]>1000000) break; } while(n--) { memset(s,'