yokobuttonの不定期で競技プログラミングをするブログ

不定期で解けた競技プログラミングコンテストの問題を載せています。

AtCoder Beginner Contest 241(Sponsored by Panasonic)A - Digit Machine

問題の要約
 1桁の数字が表示される画面と、ボタンからなる機械がある。
 画面に数字kが表示されているとき、ボタンを1回押すと画面の数字がakに変わる。
 0が表示されている状態からボタンを3回押すと、画面には何が表示されるか?
制約
 0<=ai<=9
入力
 a0 a1 ... a9
考え方
 1、数字kが数字akに変わるので、その10個の数字をvector<int> aで管理する。
 2、0が表示されている状態から始まるので、最初の数字はans=0で初期化。
 3、ボタンを1回押した後の数字はa[ans]で取得できるので、これをansに格納する。
 4、ボタンを3回押した後に画面に表示される数字を聞かれているので3回繰り返す。
実際のプログラム
#include<iostream>
#include<vector>

using namespace std;

int main(){
  vector<int> a(10);
  for(int i = 0; i < 10; i++){
    cin >> a[i];
  }
  int ans = 0;
  for(int i = 0; i < 3; i++){
    ans = a[ans];
  }
  
  cout << ans << endl;

  return 0;
}