【競プロ精進ログ】ABC146-B

zuka

ABCをコツコツ解いていきます。

本記事は,管理人の競技プロ精進日記としてログを取ったものです。モチベーションを爆上げするために,積極的にアウトプットしていく作戦です。

これから競技プログラミングを始めようと考えている人や,なんとなく敷居が高いと感じている人の参考になれば嬉しく思います。その他の記事は以下をご覧ください。

目次

本記事の概要

Atcoderで初心者用のコンテストとして開催されているAtcoder Beginner Contest(通称ABC)を解いていくものです。今回はABC146-B「ROT N」です。

ポイント

文字をASCIIコードで考えて,整数を足し引きすることでアルファベットを変えることができます。例えば,'A'は65,'a'は97のように表されます。

#include <bits/stdc++.h>
using namespace std;

int main(){
  char A = 'A';
  char a = 'a';
  // 'A'は65
  cout << (int) A << endl;
  // 'a'は97
  cout << (int) a << endl;
}
おさえるべき内容

 文字をASCIIコードで考える

実装

#include <bits/stdc++.h>
#define _GLIBCXX_DEBUG
#define rep(i, n) for (int i = 0; i < (int)(n); i++)
#define repi(i, a, b) for (int i = (int)(a); i < (int)(b); i++)
using namespace std;

int main(){
  int N;
  string S;
  cin >> N >> S;

  rep(i, S.size()){
    // 出力する文字が'A'からどれだけ進ませるか
    int gap = S[i] - 'A' + N;
    // Zの次はAにするために26で割ったあまりを利用する
    cout << (char) ('A' + (gap % 26));
  }
  cout << endl;
}
よかったらシェアしてね!

コメント

コメントする

目次
閉じる