- import java.io.*;
- import java.util.*;
-
-
- public class TestClass {
-
- static class Reader
- {
- final private int BUFFER_SIZE = 1 << 16;
- private DataInputStream din;
- private byte[] buffer;
- private int bufferPointer, bytesRead;
-
- public Reader()
- {
- din = new DataInputStream(System.in);
- buffer = new byte[BUFFER_SIZE];
- bufferPointer = bytesRead = 0;
- }
-
- public Reader(String file_name) throws IOException
- {
- din = new DataInputStream(new FileInputStream(file_name));
- buffer = new byte[BUFFER_SIZE];
- bufferPointer = bytesRead = 0;
- }
-
- public String readLine() throws IOException
- {
- byte[] buf = new byte[64]; // line length
- int cnt = 0, c;
- while ((c = read()) != -1)
- {
- if (c == '\n')
- break;
- buf[cnt++] = (byte) c;
- }
- return new String(buf, 0, cnt);
- }
-
- public int nextInt() throws IOException
- {
- int ret = 0;
- byte c = read();
- while (c <= ' ')
- c = read();
- boolean neg = (c == '-');
- if (neg)
- c = read();
- do
- {
- ret = ret * 10 + c - '0';
- } while ((c = read()) >= '0' && c <= '9');
-
- if (neg)
- return -ret;
- return ret;
- }
-
- public long nextLong() throws IOException
- {
- long ret = 0;
- byte c = read();
- while (c <= ' ')
- c = read();
- boolean neg = (c == '-');
- if (neg)
- c = read();
- do {
- ret = ret * 10 + c - '0';
- }
- while ((c = read()) >= '0' && c <= '9');
- if (neg)
- return -ret;
- return ret;
- }
-
- public double nextDouble() throws IOException
- {
- double ret = 0, div = 1;
- byte c = read();
- while (c <= ' ')
- c = read();
- boolean neg = (c == '-');
- if (neg)
- c = read();
-
- do {
- ret = ret * 10 + c - '0';
- }
- while ((c = read()) >= '0' && c <= '9');
-
- if (c == '.')
- {
- while ((c = read()) >= '0' && c <= '9')
- {
- ret += (c - '0') / (div *= 10);
- }
- }
-
- if (neg)
- return -ret;
- return ret;
- }
-
- private void fillBuffer() throws IOException
- {
- bytesRead = din.read(buffer, bufferPointer = 0, BUFFER_SIZE);
- if (bytesRead == -1)
- buffer[0] = -1;
- }
-
- private byte read() throws IOException
- {
- if (bufferPointer == bytesRead)
- fillBuffer();
- return buffer[bufferPointer++];
- }
-
- public void close() throws IOException
- {
- if (din == null)
- return;
- din.close();
- }
- }
- public static void main(String[] args) throws IOException {
- Reader r = new Reader();
- int t = r.nextInt();
- StringBuilder sb = new StringBuilder("");
- long[] arr = new long[60];
- for (int i = 0; i < 60; i++) {
- arr[i] = (long) Math.pow(2, i);
- }
- while (t-- > 0) {
- int n = r.nextInt();
- long charge, sum = 0;
- if (n <= 60)
- charge = arr[n-1];
- else
- charge = 0;
- for (int i = 0; i < n; i++) {
- long number = r.nextLong();
- if (n <= 60 && number >= charge) {
- sum = (sum + (number % 1000000007)) % 1000000007;
- }
- }
- sb.append(sum+"\n");
- }
- System.out.println(sb);
- }
- }
Language: Java 8