description: Polycarp likes squares and cubes of positive integers. Here is the beginning of the sequence of numbers he likes: 1, 4, 8, 9, ....
  
  For a given number n, count the number of integers from 1 to n that Polycarp likes. In other words, find the number of such x that x is a square of a positive integer number or a cube of a positive integer number (or both a square and a cube simultaneously).
  
  Input
  
  The first line contains an integer t (1 ≤ t ≤ 20) — the number of test cases.
  
  Then t lines contain the test cases, one per line. Each of the lines contains one integer n (1 ≤ n ≤ 10^9).
  
  Output
  
  For each test case, print the answer you are looking for — the number of integers from 1 to n that Polycarp likes.
  
  Example
  
  Input
  
  
  6
  10
  1
  25
  1000000000
  999999999
  500000000
  
  
  Output
  
  
  4
  1
  6
  32591
  32590
  23125
solution: 
  import java.io.ByteArrayInputStream;
  import java.io.IOException;
  import java.io.InputStream;
  import java.io.PrintWriter;
  import java.util.Arrays;
  import java.util.HashSet;
  import java.util.InputMismatchException;
  import java.util.Set;
  
  public class B {
  	private static PrintWriter out = new PrintWriter(System.out);
  
  	public static void solve() {
  		In in = new In();
  		int tests = in.ni();
  		while (tests-- > 0) {
  			long n = in.nl();
  			Set<Long> set = new HashSet<>();
  			for (int i = 1;; i++) {
  				long sq = i * i;
  				if (sq > n)
  					break;
  				set.add(sq);
  			}
  			for (int i = 1;; i++) {
  				long cube = i * i * i;
  				if (cube > n)
  					break;
  				set.add(cube);
  			}
  			out.println(set.size());
  		}
  	}
  
  	public static void main(String[] args) throws IOException {
  		// long start = System.nanoTime();
  		solve();
  		// System.out.println("Elapsed: " + (System.nanoTime() - start) / 1000000 +
  		// "ns");
  		out.flush();
  	}
  
  	@SuppressWarnings("unused")
  	private static class In {
  		final private static int BUFFER_SIZE = 1024;
  		private byte[] buf;
  		private InputStream is;
  		private int buflen;
  		private int bufptr;
  
  		public In() {
  			is = System.in;
  			buf = new byte[BUFFER_SIZE];
  			buflen = bufptr = 0;
  		}
  
  		public In(String input) {
  			is = new ByteArrayInputStream(input.getBytes());
  			buf = new byte[BUFFER_SIZE];
  			buflen = bufptr = 0;
  		}
  
  		public int readByte() {
  			if (bufptr >= buflen) {
  				try {
  					buflen = is.read(buf);
  				} catch (IOException ioe) {
  					throw new InputMismatchException();
  				}
  				bufptr = 0;
  			}
  			if (buflen <= 0)
  				return -1;
  			return buf[bufptr++];
  		}
  
  		public boolean isSpaceChar(int c) {
  			return !(c >= 33 && c <= 126);
  		}
  
  		public int skip() {
  			int b;
  			while ((b = readByte()) != -1 && isSpaceChar(b))
  				;
  			return b;
  		}
  
  		/* Next character */
  		public char nc() {
  			return (char) skip();
  		}
  
  		/* Next double */
  		public double nd() {
  			return Double.parseDouble(ns());
  		}
  
  		/* Next string */
  		public String ns() {
  			final StringBuilder sb = new StringBuilder();
  			int b = skip();
  			while (!isSpaceChar(b)) {
  				sb.appendCodePoint(b);
  				b = readByte();
  			}
  			return sb.toString();
  		}
  
  		/* Next integer */
  		public int ni() {
  			boolean minus = false;
  			int num = 0;
  			int b;
  			while ((b = readByte()) != -1 && !((b >= '0' && b <= '9') || b == '-'))
  				;
  			if (b == '-') {
  				minus = true;
  				b = readByte();
  			}
  			while (b >= '0' && b <= '9') {
  				num = num * 10 + (b - '0');
  				b = readByte();
  			}
  			return minus ? -num : num;
  		}
  
  		/* Next long */
  		public long nl() {
  			boolean minus = false;
  			long num = 0;
  			int b;
  			while ((b = readByte()) != -1 && !((b >= '0' && b <= '9') || b == '-'))
  				;
  			if (b == '-') {
  				minus = true;
  				b = readByte();
  			}
  			while (b >= '0' && b <= '9') {
  				num = num * 10 + (b - '0');
  				b = readByte();
  			}
  			return minus ? -num : num;
  		}
  
  		/* Next integer 1D array */
  		public Integer[] nia(int n) {
  			final Integer[] arr = new Integer[n];
  			for (int i = 0; i < n; i++)
  				arr[i] = ni();
  			return arr;
  		}
  
  		/* Next long 1D array */
  		public long[] nla(int n) {
  			final long[] arr = new long[n];
  			for (int i = 0; i < n; i++)
  				arr[i] = nl();
  			return arr;
  		}
  
  		/* Next string 1D array */
  		public String[] nsa(int n) {
  			final String[] arr = new String[n];
  			for (int i = 0; i < n; i++)
  				arr[i] = ns();
  			return arr;
  		}
  
  		/* Next char 1D array */
  		public char[] nca(int n) {
  			final char[] arr = new char[n];
  			for (int i = 0; i < n; i++)
  				arr[i] = nc();
  			return arr;
  		}
  
  		/* Next double 1D array */
  		public double[] nda(int n) {
  			final double[] arr = new double[n];
  			for (int i = 0; i < n; i++)
  				arr[i] = nc();
  			return arr;
  		}
  
  		/* Next integer matrix */
  		public int[][] nim(int n, int m) {
  			final int[][] arr = new int[n][m];
  			for (int i = 0; i < n; i++)
  				for (int j = 0; j < m; j++)
  					arr[i][j] = ni();
  			return arr;
  		}
  
  		/* Next long matrix */
  		public long[][] nlm(int n, int m) {
  			final long[][] arr = new long[n][m];
  			for (int i = 0; i < n; i++)
  				for (int j = 0; j < m; j++)
  					arr[i][j] = nl();
  			return arr;
  		}
  
  		/* Next string matrix */
  		public String[][] nsm(int n, int m) {
  			final String[][] arr = new String[n][m];
  			for (int i = 0; i < n; i++)
  				for (int j = 0; j < m; j++)
  					arr[i][j] = ns();
  			return arr;
  		}
  
  		/* Next char matrix */
  		public char[][] ncm(int n, int m) {
  			final char[][] arr = new char[n][m];
  			for (int i = 0; i < n; i++)
  				for (int j = 0; j < m; j++)
  					arr[i][j] = nc();
  			return arr;
  		}
  
  		/* Next double matrix */
  		public double[][] ndm(int n, int m) {
  			final double[][] arr = new double[n][m];
  			for (int i = 0; i < n; i++)
  				for (int j = 0; j < m; j++)
  					arr[i][j] = nd();
  			return arr;
  		}
  
  		public static void log(Object... o) {
  			System.out.println(Arrays.deepToString(o));
  		}
  	}
  
  }
  