/* 問題をよく読もう! 論理的に考えよう! サンプルを確認しよう! 絶対に諦めるな! 工夫をしろ! 配列は少し多めにとっておく Twitterは終わるまでログアウト! (間違えて解法をツイートしてはいけないから) */ //include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include //namespace using namespace std; //繰り返し #define REP(i, m, n) for(int i=(int)m; i<(int)n; ++i) #define rep(i, n) REP(i, 0, n) //イテレータ #define all_range(C) begin(C), end(C) //簡略化 typedef long long ll; typedef pair pint; typedef pair pli; typedef pair pst; const int inf = 1e9+7; const ll longinf = 1LL<<60; const ll mod = 1e9+7; //最大最小 template inline void chmin(T1 &a, T2 b) {if(a>b) a=b;} template inline void chmax(T1 &a, T2 b) {if(a0) { sum *= x; --y; } return sum; } /*考えを書くスペース 累乗和で解く ・総和を求める ・取り消すところの一つ先を見る */ //main.cpp---------------------------- #define max_l 10000 void solve(); string s; string a = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; int main() { cin >> s; solve(); return 0; } void solve() { for(int i=1; i<=(int)(s.length()); ++i) { int n = (s[i-1]-'A' - i)%26; if(n>=0) cout << a[n]; else cout << a[26+n]; } cout << endl; }