文系プログラマーのプログラミング備忘録

Java、競プロ、数学などについて書いてます

Fafa and his Company [ Codeforces Round #465 (Div. 2) A ]

codeforces.com


問題

ある会社の社員数 n が与えられる。
この中から i 人選んでチームリーダーとし、残りの n-i 人の社員をそれぞれのチームリーダーに従属させる。
全てのチームリーダーが同じ人数の社員を持てるような i の選び方は何通りあるか。


考察

i 人のチームリーダーで n-i 人を均等に分けられればいいのだから、n-i を i で割り切れるかどうか試せばよいです。
n<=10^5 なので、全探索が可能です。
下記のコードでは、i の上限を n/2 として探索しています(i が n-i 以上になっては n-i を i で割り切れないから)。

コード

void solve (FastScanner in, PrintWriter out) {
	
	int n = in.nextInt();
	int ans = 0;
	
	for (int i=1; i<=n/2; i++) {
		if ((n-i)%i == 0) ans++;
	}
	
	out.println(ans);
	
}