C♯の勉強

C♯4.0 で TopCoder の過去問を解きます。

2013-11-14から1日間の記事一覧

TopCoder SRM596: SparseFactorialDiv2

\(F(n) = n (n - 1^2) (n - 2^2) ... (n - k^2) \) ただし \(k\) は \((n - k^2) > 0\) となる最大の整数とする「\(F(n) \mod m = 0 \)」が成立することと 「\((n - x^2) \mod m = 0\) かつ \( n > x^2 \) となるような自然数 \( x \) が存在すること」は同…

TopCoder SRM596: IncrementAndDoubling

(最長bitの高さ - 1) + 立っている bitの個数が答えになる。いったん2進数文字列に変換すると楽になった。 public class IncrementAndDoubling { public int getMin(int[] desiredArray) { var a = desiredArray.Select(d => Convert.ToString(d, 2)); retu…

TopCoder SRM596: ColorfulRoad

dp[現在の位置] = 最小ステップ数として動的計画法を適用する public class ColorfulRoad { public int getMin(string road) { int n = road.Length; int inf = 1 << 30; var dp = Enumerable.Repeat(inf, n).ToArray(); dp[0] = 0; for (int i = 0; i < n; …

TopCoder SRM596: FoxAndSightseeing

先頭と末尾以外の要素についてスキップを試す。 public class FoxAndSightseeing { public int getMin(int[] position) { int n = position.Length; var candidate = Enumerable.Range(1, n - 2) .Select(i => position.Where((v, index) => index != i)) .T…