結果
問題 | No.1243 約数加算 |
ユーザー |
|
提出日時 | 2020-10-02 21:50:54 |
言語 | Java (openjdk 23) |
結果 |
RE
(最新)
AC
(最初)
|
実行時間 | - |
コード長 | 17,971 bytes |
コンパイル時間 | 3,359 ms |
コンパイル使用メモリ | 92,740 KB |
実行使用メモリ | 52,616 KB |
最終ジャッジ日時 | 2024-07-16 04:47:48 |
合計ジャッジ時間 | 5,040 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | RE * 1 |
other | RE * 9 |
ソースコード
import java.io.InputStream;import java.util.ArrayList;import java.util.Arrays;import java.util.function.IntUnaryOperator;import java.util.function.LongUnaryOperator;public class Main {public static void main(String[] args) throws Exception {ExtendedScanner sc = new ExtendedScanner();FastPrintStream pw = new FastPrintStream();int t = sc.nextInt();while (t --> 0) {solve(sc, pw);}sc.close();pw.flush();pw.close();}public static void solve(ExtendedScanner sc, FastPrintStream pw) {long a = sc.nextLong();long b = sc.nextLong();int tlz = Long.numberOfTrailingZeros(a);long d = b - a;ArrayList<Long> l = new ArrayList<>();for (int i = 0; i <= 60; i++) {if (((d >> i) & 1) == 1) {if (tlz < i) {for (int j = tlz; j < i; j++) {if (((a >> j) & 1) == 1) {l.add(1l << j);a += 1l << j;d -= 1l << j;}}tlz = Long.numberOfTrailingZeros(a);} else if (tlz == i) {l.add(1l << i);a += 1l << i;d -= 1l << i;tlz = Long.numberOfTrailingZeros(a);}}}for (int i = 60; i >= 0; i--) {if (((d >> i) & 1) == 1) {l.add(1l << i);a += 1l << i;d -= 1l << i;}}int k = l.size();pw.println(k);for (int i = 0; i < k; i++) {pw.print(l.get(i));pw.print(i == k - 1 ? '\n' : ' ');}}}/*** @author https://atcoder.jp/users/suisen*/class FastScanner implements AutoCloseable {private final ByteBuffer tokenBuf = new ByteBuffer();private final java.io.InputStream in;private final byte[] rawBuf = new byte[1 << 14];private int ptr = 0;private int buflen = 0;public FastScanner(java.io.InputStream in) {this.in = in;}public FastScanner() {this(new java.io.FileInputStream(java.io.FileDescriptor.in));}private final int readByte() {if (ptr < buflen) return rawBuf[ptr++];ptr = 0;try {buflen = in.read(rawBuf);if (buflen > 0) {return rawBuf[ptr++];} else {throw new java.io.EOFException();}} catch (java.io.IOException e) {throw new java.io.UncheckedIOException(e);}}private final int readByteUnsafe() {if (ptr < buflen) return rawBuf[ptr++];ptr = 0;try {buflen = in.read(rawBuf);if (buflen > 0) {return rawBuf[ptr++];} else {return -1;}} catch (java.io.IOException e) {throw new java.io.UncheckedIOException(e);}}private final int skipUnprintableChars() {int b = readByte();while (b <= 32 || b >= 127) b = readByte();return b;}private final void loadToken() {tokenBuf.clear();for (int b = skipUnprintableChars(); 32 < b && b < 127; b = readByteUnsafe()) {tokenBuf.append(b);}}public final boolean hasNext() {for (int b = readByteUnsafe(); b <= 32 || b >= 127; b = readByteUnsafe()) {if (b == -1) return false;}--ptr;return true;}public final String next() {loadToken();return new String(tokenBuf.getRawBuf(), 0, tokenBuf.size());}public final String nextLine() {tokenBuf.clear();for (int b = readByte(); b != '\n'; b = readByteUnsafe()) {if (b == -1) break;tokenBuf.append(b);}return new String(tokenBuf.getRawBuf(), 0, tokenBuf.size());}public final char nextChar() {return (char) skipUnprintableChars();}public final char[] nextChars() {loadToken();return tokenBuf.toCharArray();}public final long nextLong() {long n = 0;boolean isNegative = false;int b = skipUnprintableChars();if (b == '-') {isNegative = true;b = readByteUnsafe();}if (b < '0' || '9' < b) throw new NumberFormatException();while ('0' <= b && b <= '9') {// -9223372036854775808 - 9223372036854775807if (n >= 922337203685477580l) {if (n > 922337203685477580l) {throw new ArithmeticException("long overflow");}if (isNegative) {if (b >= '9') {throw new ArithmeticException("long overflow");}n = -n - (b + '0');b = readByteUnsafe();if ('0' <= b && b <= '9') {throw new ArithmeticException("long overflow");} else if (b <= 32 || b >= 127) {return n;} else {throw new NumberFormatException();}} else {if (b >= '8') {throw new ArithmeticException("long overflow");}n = n * 10 + b - '0';b = readByteUnsafe();if ('0' <= b && b <= '9') {throw new ArithmeticException("long overflow");} else if (b <= 32 || b >= 127) {return n;} else {throw new NumberFormatException();}}}n = n * 10 + b - '0';b = readByteUnsafe();}if (b <= 32 || b >= 127) return isNegative ? -n : n;throw new NumberFormatException();}public final int nextInt() {long value = nextLong();if ((int) value != value) {throw new ArithmeticException("int overflow");}return (int) value;}public final double nextDouble() {return Double.parseDouble(next());}public final void close() {try {in.close();} catch (java.io.IOException e) {throw new java.io.UncheckedIOException(e);}}private static final class ByteBuffer {private static final int DEFAULT_BUF_SIZE = 1 << 12;private byte[] buf;private int ptr = 0;private ByteBuffer(int capacity) {this.buf = new byte[capacity];}private ByteBuffer() {this(DEFAULT_BUF_SIZE);}private ByteBuffer append(int b) {if (ptr == buf.length) {int newLength = buf.length << 1;byte[] newBuf = new byte[newLength];System.arraycopy(buf, 0, newBuf, 0, buf.length);buf = newBuf;}buf[ptr++] = (byte) b;return this;}private char[] toCharArray() {char[] chs = new char[ptr];for (int i = 0; i < ptr; i++) {chs[i] = (char) buf[i];}return chs;}private byte[] getRawBuf() {return buf;}private int size() {return ptr;}private void clear() {ptr = 0;}}}/*** @author https://atcoder.jp/users/suisen*/final class ExtendedScanner extends FastScanner {public ExtendedScanner() {super();}public ExtendedScanner(InputStream in) {super(in);}public int[] ints(final int n) {final int[] a = new int[n];Arrays.setAll(a, $ -> nextInt());return a;}public int[] ints(final int n, final IntUnaryOperator f) {final int[] a = new int[n];Arrays.setAll(a, $ -> f.applyAsInt(nextInt()));return a;}public int[][] ints(final int n, final int m) {final int[][] a = new int[n][];Arrays.setAll(a, $ -> ints(m));return a;}public int[][] ints(final int n, final int m, final IntUnaryOperator f) {final int[][] a = new int[n][];Arrays.setAll(a, $ -> ints(m, f));return a;}public long[] longs(final int n) {final long[] a = new long[n];Arrays.setAll(a, $ -> nextLong());return a;}public long[] longs(final int n, final LongUnaryOperator f) {final long[] a = new long[n];Arrays.setAll(a, $ -> f.applyAsLong(nextLong()));return a;}public long[][] longs(final int n, final int m) {final long[][] a = new long[n][];Arrays.setAll(a, $ -> longs(m));return a;}public long[][] longs(final int n, final int m, final LongUnaryOperator f) {final long[][] a = new long[n][];Arrays.setAll(a, $ -> longs(m, f));return a;}public char[][] charArrays(final int n) {final char[][] c = new char[n][];Arrays.setAll(c, $ -> nextChars());return c;}public double[] doubles(final int n) {final double[] a = new double[n];Arrays.setAll(a, $ -> nextDouble());return a;}public double[][] doubles(final int n, final int m) {final double[][] a = new double[n][];Arrays.setAll(a, $ -> doubles(m));return a;}public String[] strings(final int n) {final String[] s = new String[n];Arrays.setAll(s, $ -> next());return s;}}/*** @author https://atcoder.jp/users/suisen*/class FastPrintStream implements AutoCloseable {private static final int INT_MAX_LEN = 11;private static final int LONG_MAX_LEN = 20;private int precision = 9;private static final int BUF_SIZE = 1 << 14;private static final int BUF_SIZE_MINUS_INT_MAX_LEN = BUF_SIZE - INT_MAX_LEN;private static final int BUF_SIZE_MINUS_LONG_MAX_LEN = BUF_SIZE - LONG_MAX_LEN;private final byte[] buf = new byte[BUF_SIZE];private int ptr = 0;private final java.lang.reflect.Field strField;private final java.nio.charset.CharsetEncoder encoder;private final java.io.OutputStream out;public FastPrintStream(java.io.OutputStream out) {this.out = out;java.lang.reflect.Field f;try {f = java.lang.String.class.getDeclaredField("value");f.setAccessible(true);} catch (NoSuchFieldException | SecurityException e) {f = null;}this.strField = f;this.encoder = java.nio.charset.StandardCharsets.US_ASCII.newEncoder();}public FastPrintStream(java.io.File file) throws java.io.IOException {this(new java.io.FileOutputStream(file));}public FastPrintStream(java.lang.String filename) throws java.io.IOException {this(new java.io.File(filename));}public FastPrintStream() {this(new java.io.FileOutputStream(java.io.FileDescriptor.out));}public FastPrintStream println() {if (ptr == BUF_SIZE) internalFlush();buf[ptr++] = (byte) '\n';return this;}public FastPrintStream println(java.lang.Object o) {return print(o).println();}public FastPrintStream println(java.lang.String s) {return print(s).println();}public FastPrintStream println(char[] s) {return print(s).println();}public FastPrintStream println(char c) {return print(c).println();}public FastPrintStream println(int x) {return print(x).println();}public FastPrintStream println(long x) {return print(x).println();}public FastPrintStream println(double d, int precision) {return print(d, precision).println();}public FastPrintStream println(double d) {return print(d).println();}private FastPrintStream print(byte[] bytes) {int n = bytes.length;if (ptr + n > BUF_SIZE) {internalFlush();try {out.write(bytes);} catch (java.io.IOException e) {throw new java.io.UncheckedIOException(e);}} else {System.arraycopy(bytes, 0, buf, ptr, n);ptr += n;}return this;}public FastPrintStream print(java.lang.Object o) {return print(o.toString());}public FastPrintStream print(java.lang.String s) {if (strField == null) {return print(s.getBytes());} else {try {Object value = strField.get(s);if (value instanceof byte[]) {return print((byte[]) value);} else {return print((char[]) value);}} catch (IllegalAccessException e) {return print(s.getBytes());}}}public FastPrintStream print(char[] s) {try {return print(encoder.encode(java.nio.CharBuffer.wrap(s)).array());} catch (java.nio.charset.CharacterCodingException e) {byte[] bytes = new byte[s.length];for (int i = 0; i < s.length; i++) {bytes[i] = (byte) s[i];}return print(bytes);}}public FastPrintStream print(char c) {if (ptr == BUF_SIZE) internalFlush();buf[ptr++] = (byte) c;return this;}public FastPrintStream print(int x) {if (ptr > BUF_SIZE_MINUS_INT_MAX_LEN) internalFlush();if (-10 < x && x < 10) {if (x < 0) {buf[ptr++] = '-';x = -x;}buf[ptr++] = (byte) ('0' + x);return this;}int d;if (x < 0) {if (x == Integer.MIN_VALUE) {buf[ptr++] = '-'; buf[ptr++] = '2'; buf[ptr++] = '1'; buf[ptr++] = '4';buf[ptr++] = '7'; buf[ptr++] = '4'; buf[ptr++] = '8'; buf[ptr++] = '3';buf[ptr++] = '6'; buf[ptr++] = '4'; buf[ptr++] = '8';return this;}d = len(x = -x);buf[ptr++] = '-';} else {d = len(x);}int j = ptr += d;while (x > 0) {buf[--j] = (byte) ('0' + (x % 10));x /= 10;}return this;}public FastPrintStream print(long x) {if ((int) x == x) return print((int) x);if (ptr > BUF_SIZE_MINUS_LONG_MAX_LEN) internalFlush();int d;if (x < 0) {if (x == Long.MIN_VALUE) {buf[ptr++] = '-'; buf[ptr++] = '9'; buf[ptr++] = '2'; buf[ptr++] = '2';buf[ptr++] = '3'; buf[ptr++] = '3'; buf[ptr++] = '7'; buf[ptr++] = '2';buf[ptr++] = '0'; buf[ptr++] = '3'; buf[ptr++] = '6'; buf[ptr++] = '8';buf[ptr++] = '5'; buf[ptr++] = '4'; buf[ptr++] = '7'; buf[ptr++] = '7';buf[ptr++] = '5'; buf[ptr++] = '8'; buf[ptr++] = '0'; buf[ptr++] = '8';return this;}d = len(x = -x);buf[ptr++] = '-';} else {d = len(x);}int j = ptr += d;while (x > 0) {buf[--j] = (byte) ('0' + (x % 10));x /= 10;}return this;}public FastPrintStream print(double d, int precision) {if (d < 0) {print('-');d = -d;}d += Math.pow(10, -precision) / 2;print((long) d).print('.');d -= (long) d;for(int i = 0; i < precision; i++){d *= 10;print((int) d);d -= (int) d;}return this;}public FastPrintStream print(double d) {return print(d, precision);}public void setPrecision(int precision) {this.precision = precision;}private void internalFlush() {try {out.write(buf, 0, ptr);ptr = 0;} catch (java.io.IOException e) {throw new java.io.UncheckedIOException(e);}}public void flush() {try {out.write(buf, 0, ptr);out.flush();ptr = 0;} catch (java.io.IOException e) {throw new java.io.UncheckedIOException(e);}}public void close() {try {out.close();} catch (java.io.IOException e) {throw new java.io.UncheckedIOException(e);}}private static int len(int x) {returnx >= 1000000000 ? 10 :x >= 100000000 ? 9 :x >= 10000000 ? 8 :x >= 1000000 ? 7 :x >= 100000 ? 6 :x >= 10000 ? 5 :x >= 1000 ? 4 :x >= 100 ? 3 :x >= 10 ? 2 : 1;}private static int len(long x) {returnx >= 1000000000000000000l ? 19 :x >= 100000000000000000l ? 18 :x >= 10000000000000000l ? 17 :x >= 1000000000000000l ? 16 :x >= 100000000000000l ? 15 :x >= 10000000000000l ? 14 :x >= 1000000000000l ? 13 :x >= 100000000000l ? 12 :x >= 10000000000l ? 11 : 10;}}