結果
| 問題 |
No.420 mod2漸化式
|
| ユーザー |
14番
|
| 提出日時 | 2016-09-10 08:08:38 |
| 言語 | C#(csc) (csc 3.9.0) |
| 結果 |
TLE
|
| 実行時間 | - |
| コード長 | 1,828 bytes |
| コンパイル時間 | 1,162 ms |
| コンパイル使用メモリ | 109,184 KB |
| 実行使用メモリ | 120,932 KB |
| 最終ジャッジ日時 | 2024-11-16 19:44:28 |
| 合計ジャッジ時間 | 62,191 ms |
|
ジャッジサーバーID (参考情報) |
judge4 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 1 |
| other | AC * 5 TLE * 30 |
コンパイルメッセージ
Microsoft (R) Visual C# Compiler version 3.9.0-6.21124.20 (db94f4cc) Copyright (C) Microsoft Corporation. All rights reserved.
ソースコード
using System;
using System.Collections.Generic;
using System.Text;
using System.Linq;
class Program
{
public void Proc()
{
Reader.IsDebug = false;
this.TargetCount = int.Parse(Reader.ReadLine());
List<long> ret = this.GetAns(0,0);
Console.WriteLine(ret.Count + " " + ret.Sum(a=>a));
}
private long TargetCount;
private List<long> GetAns(int idx, int cnt) {
List<long> ret = new List<long>();
if(idx >= 31) {
if(cnt == TargetCount) {
ret.Add(0);
}
return ret;
}
if(cnt > this.TargetCount) {
return ret;
}
List<long> tmp = this.GetAns(idx + 1, cnt);
List<long> tmp2 = this.GetAns(idx + 1, cnt + 1);
ret.AddRange(tmp);
tmp2.ForEach(a=>ret.Add(a + (1<<idx)));
return ret;
}
private long GetNum(int num) {
if(dic.ContainsKey(num)) {
return dic[num];
}
long ans = this.GetNum(num / 2) + (num % 2);
dic.Add(num, ans);
return ans;
}
private Dictionary<int, long> dic = new Dictionary<int, long>();
public class Reader
{
public static bool IsDebug = true;
private static String PlainInput = @"
1
";
private static System.IO.StringReader Sr = null;
public static string ReadLine()
{
if (IsDebug)
{
if (Sr == null)
{
Sr = new System.IO.StringReader(PlainInput.Trim());
}
return Sr.ReadLine();
}
else
{
return Console.ReadLine();
}
}
}
static void Main()
{
Program prg = new Program();
prg.Proc();
}
}
14番