kmjp's blog

競技プログラミング参加記です

Codeforces #441 Div1 A. Classroom Watch

ひどすぎて久々に赤から落ちてしまった。
http://codeforces.com/contest/875/problem/A

問題

ある整数Xと、Xの各桁の数値を足したらNになった。
Nが与えられたとき、Xの候補を答えよ。

解法

どっかで見たな…と思ったら↓これだった。
AtCoder ARC #034 : A - 首席、B - 方程式 - kmjp's blog

ll N;

int dig(ll v) {
	int ret=0;
	while(v) {
		ret+=v%10;
		v/=10;
	}
	return ret;
}

void solve() {
	int i,j,k,l,r,x,y; string s;
	
	cin>>N;
	
	vector<int> ret;
	for(ll a=max(1LL,N-200LL);a<=N;a++) {
		if(a+dig(a)==N) ret.push_back(a);
	}
	
	cout<<ret.size()<<endl;
	FORR(c,ret) cout<<c<<endl;
	
}

まとめ

まぁこれは知らなくてもすぐ解けるか。