AtCoder ABC 171 反省

atcoder.jp

結果

A, B, D 問題は AC した(D 問題は勘違いで4回も WA してしまった)。C 問題は解けず。E, F 問題は見てもいなかった(C 問題で必死になりすぎた)。

感想

D 問題はアウトプットする数字が int 型ではオーバーフローしてしまうのに気がつかないという痛恨のミスをしてしまった。もう競プロをやるときは何も考えずに 64 bit の整数型を使った方がいいかもしれない。

C 問題復習

問題概要

1, 2, \cdots, 26 にはそれぞれ a, b,\cdots, z を割り振る。27, 28, \cdots, 702 にはそれぞれ aa, ab,\cdots, zz を割り振る・・・というようなことを N=1000000000000001 までやっていく。与えられた整数 x に対応するアルファベットを出力せよ。

解き方

後でまとめます

AC したコード
#include<bits/stdc++.h>
using namespace std;

int main(){
  int64_t n,tmp;
  cin >>n;
  int x=0;
  vector<char>ans;
  while(n){
    n--;
    int tmp1=n%26+(int)'a';
    ans.push_back((char)tmp1);
    x++;
    n/=26;
  }
  
  for(int i=x-1;i>=0;i--){
    cout <<ans.at(i);
  }
  cout <<endl;
}