結果

問題 No.183 たのしい排他的論理和(EASY)
ユーザー mban
提出日時 2017-01-12 13:20:32
言語 C#
結果
RE  
実行時間 -
コード長 1806 Byte
コンパイル時間 303 ms
使用メモリ 19364 KB

テストケース

テストケース表示
入力 結果 実行時間
使用メモリ
00_sample01.in AC 28 ms
14944 KB
00_sample02.in AC 30 ms
19036 KB
10_random_small01.in AC 29 ms
19028 KB
10_random_small02.in AC 28 ms
14948 KB
10_random_small03.in AC 28 ms
16988 KB
10_random_small04.in AC 42 ms
16984 KB
10_random_small05.in AC 32 ms
16992 KB
20_random_large01.in RE -
20_random_large02.in AC 175 ms
15220 KB
20_random_large03.in AC 131 ms
17192 KB
20_random_large04.in AC 148 ms
15188 KB
20_random_large05.in AC 189 ms
15276 KB
30_corner01.in RE -
30_corner02.in AC 29 ms
16984 KB
30_corner03.in AC 111 ms
17192 KB
30_corner04.in AC 197 ms
19364 KB
system_test1.txt RE -
system_test2.txt AC 47 ms
16996 KB
テストケース一括ダウンロード

ソースコード

diff #
using System;
using System.Collections;
using System.Collections.Generic;
using System.Collections.Specialized;
using System.Text;
using System.Text.RegularExpressions;
using System.Linq;
using System.IO;

class Program
{
    static private Magatro M = new Magatro();
    static private void Main(string[]args)
    {
        M.Scan();
        M.Solve();
    }
}

public class Scanner
{
    private string[] S;
    private int Index;
    private char Separator;

    public Scanner(char separator = ' ')
    {
        Index = 0;
        Separator = separator;
    }

    private string[] Line()
    {
        return Console.ReadLine().Split(Separator);
    }

    public string Next()
    {
        string result;
        if (S == null || Index >= S.Length)
        {
            S = Line();
            Index = 0;
        }
        result = S[Index];
        Index++;
        return result;
    }
    public int NextInt()
    {
        return int.Parse(Next());
    }
    public double NextDouble()
    {
        return double.Parse(Next());
    }
    public long NextLong()
    {
        return long.Parse(Next());
    }
}

public class Magatro
{
    private int N;
    private int[] A;
    private const int Max = 16384;
    public void Scan()
    {
        Scanner sc = new Scanner();
        N = sc.NextInt();
        A = new int[N];
        for(int i = 0; i < N; i++)
        {
            A[i] = sc.NextInt();
        }
    }
    public void Solve()
    {
        bool[] dp = new bool[Max + 1];
        dp[0] = true;
        for(int i = 0; i < N; i++)
        {
            for(int j = 0; j <= Max; j++)
            {
                if (dp[j])
                {
                    dp[j ^ A[i]] = true;
                }
            }
        }
        Console.WriteLine(dp.Count(ss =>ss));
    }
}
0