Javaでunsinged long型を扱う

F - I hate Matrix Construction

を解くため、Javaでunsigned longを扱う必要が出てきた。基本はビット演算目的で使用するため、プログラムの中ではunsignedである必要がないが、入力と出力を 2^{63} 2^{64}-1の値を対応すればよい。

Unsigned long in Java - Stack Overflow

に解決策が書かれている。

Scannerから入力する場合、入力は

long number = Long.parseUnsignedLong(scanner.next());

で入力し、出力は

System.out.println(Long.toUnsignedString(number));

で出力すればよい。