Official

A - Lacked Number Editorial by mechanicalpenciI


0 , 1 , \(\ldots\) , 9 それぞれに対して文字列 \(S\) に登場したかどうかの flag を持っておいて、最後に登場していないものを出力すれば良いです。文字列または文字から数値への変換には言語によって (あるいは同一言語の中でも) 様々な方法が存在しますが、自分が扱いやすいものを \(1\) つは知っておくと良いかもしれません。

c++ による実装例 :

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

int main(void) {
	string S;
	bool flag[10];
	for (int i = 0; i < 10; i++)flag[i] = true;
	cin >> S;
	for (int i = 0; i < 9; i++)flag[((int)(S[i] - '0'))] = false;
	for (int i = 0; i < 10; i++)if (flag[i])cout << i << endl;
	return 0;
}

Python による実装例 :

S=input()
flag=[True for i in range(10)]
for i in range(9):
	flag[int(S[i])]=False
for i in range(10) :
	if(flag[i]):
		print(i)

また、余談ですが、\(0+1+\cdots +9=45\) から登場した数字をすべて引く事でも答えを求めることができます。

c++ による実装例 :

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

int main(void) {
	string S;
	cin >> S;
	int ans = 45;
	for (int i = 0; i < 9; i++)ans -= ((int)(S[i] - '0'));
	cout << ans << endl;
	return 0;
}

posted:
last update: