結果
| 問題 | No.3624 Product |
| コンテスト | |
| ユーザー |
aketijyuuzou
|
| 提出日時 | 2026-08-20 20:12:39 |
| 言語 | C#(csc) (csc 3.9.0) |
| 結果 |
AC
|
| 実行時間 | 788 ms / 2,000 ms |
| + 684µs | |
| コード長 | 2,111 bytes |
| 記録 | |
| コンパイル時間 | 4,623 ms |
| コンパイル使用メモリ | 109,440 KB |
| 実行使用メモリ | 31,744 KB |
| 最終ジャッジ日時 | 2026-08-20 20:12:51 |
| 合計ジャッジ時間 | 10,458 ms |
|
ジャッジサーバーID (参考情報) |
judge3_1 / judge1_0 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 1 |
| other | AC * 12 |
コンパイルメッセージ
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.Linq;
// https://yukicoder.me/problems/no/3624
// yukicoder 3624 Product
class Program
{
static string InputPattern = "InputX";
static List<string> GetInputList()
{
var WillReturn = new List<string>();
if (InputPattern == "Input1") {
WillReturn.Add("4");
WillReturn.Add("1 4");
WillReturn.Add("8 15");
WillReturn.Add("45 123");
WillReturn.Add("0 1000000000");
//12
//-1
//4032
//288230375614840832
}
else {
string wkStr;
while ((wkStr = Console.ReadLine()) != null) WillReturn.Add(wkStr);
}
return WillReturn;
}
static long[] GetSplitArr(string pStr)
{
return (pStr == "" ? new string[0] : pStr.Split(' ')).Select(pX => long.Parse(pX)).ToArray();
}
static void Main()
{
List<string> InputList = GetInputList();
long[] wkArr = { };
Action<string> SplitAct = (pStr) => wkArr = GetSplitArr(pStr);
foreach (string EachStr in InputList.Skip(1)) {
SplitAct(EachStr);
long L = wkArr[0];
long R = wkArr[1];
long Answer = Solve(L, R);
Console.WriteLine(Answer);
}
}
static long Solve(long pL, long pR)
{
if (pL == 0 && pR == 0) return 0;
string BinStrL = Convert.ToString(pL, 2);
string BinStrR = Convert.ToString(pR, 2);
int Length = Math.Max(BinStrL.Length, BinStrR.Length);
BinStrL = BinStrL.PadLeft(Length, '0');
BinStrR = BinStrL.PadLeft(Length, '0');
if (BinStrL[0] == '1' && BinStrR[0] == '1') return -1;
string NewBinStrL = "0";
string NewBinStrR = "1";
for (long I = 1; I <= Length - 1; I++) {
NewBinStrL += 1;
NewBinStrR += 0;
}
long LongValL = Convert.ToInt64(NewBinStrL, 2);
long LongValR = Convert.ToInt64(NewBinStrR, 2);
return LongValL * LongValR;
}
}
aketijyuuzou