AtCoder Beginner Contestの過去問から、その提出コードの解答例です。
AtCoderとは、コンテストを通じて、プログラミングやアルゴリズムを学習するサービスです。
atcoder.jp
プログラミングコンテストとは、「与えられた問題をいかに素早く、正確に」解くことができるかを競うものです。
「競技プログラミング」を略して、「競プロ」などと呼ばれています。
#D - Multiply and Rotate
僕が作成、提出したコードは、以下のとおりです。
/* AtCoder Problems in C++ #D - Multiply and Rotate https://atcoder.jp/contests/abc235/tasks/abc235_d 提出コードの解答例 https://neguse-atama.hatenablog.com */ #include<bits/stdc++.h> using namespace std; using ll=long long; int main(void){ ll a,n; cin>>a>>n; const ll N=1e6; vector<ll> v(N,-1); v[1]=0; queue<ll> que; que.push(1); while(!que.empty()){ const ll x=que.front(); que.pop(); if(x<=(N-1)/a && v[x*a]==-1){ v[x*a]=v[x]+1; que.push(x*a); } if(x>=10 && x%10!=0){ ll y=x/10; ll z=x%10; for(ll t=y;t;t/=10){ z*=10; } const ll num=y+z; if(v[num]==-1){ v[num]=v[x]+1; que.push(num); } } } cout<<v[n]<<endl; return 0; }
AtCoder Beginner Contestは、オンラインジャッジによるプログラミングコンテストです。
日本語と英語に対応していて、週末ごとに実施されているみたいです。
https://practice.contest.atcoder.jp/tutorial
アカウントを登録すれば、誰でも参加できます。