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.util.*;
  import java.io.*;
  
  public class square {
  
  	public static void main(String[] args) {
  		InputReader reader = new InputReader(System.in);
  		StringBuilder op = new StringBuilder();
  		int t = reader.nextInt();
  
  		while (t > 0) {
  			t--;
  			HashSet<Long> hs = new HashSet<Long>();
  			long c = 1;
  			long number = reader.nextLong();
  
  			long temp = (long) Math.sqrt(number);
  			for (long i = 2; i < temp + 1; i++) {
  				long sq = i * i;
  				long cube = i * i * i;
  
  				if (sq <= number) {
  					if (!hs.contains(sq)) {
  						c++;
  						hs.add(sq);
  					}
  					if (cube <= number && !hs.contains(cube)) {
  						c++;
  						hs.add(cube);
  					}
  				} else {
  					break;
  				}
  			}
  			op.append(c);
  			op.append("\n");
  		}
  
  		System.out.println(op);
  	}
  
  	static class InputReader {
  		StringTokenizer tokenizer;
  		BufferedReader reader;
  		String token;
  		String temp;
  
  		public InputReader(InputStream stream) {
  			tokenizer = null;
  			reader = new BufferedReader(new InputStreamReader(stream));
  		}
  
  		public InputReader(FileInputStream stream) {
  			tokenizer = null;
  			reader = new BufferedReader(new InputStreamReader(stream));
  		}
  
  		public String nextLine() throws IOException {
  			return reader.readLine();
  		}
  
  		public String next() {
  			while (tokenizer == null || !tokenizer.hasMoreTokens()) {
  				try {
  					if (temp != null) {
  						tokenizer = new StringTokenizer(temp);
  						temp = null;
  					} else {
  						tokenizer = new StringTokenizer(reader.readLine());
  					}
  				} catch (IOException e) {
  				}
  			}
  			return tokenizer.nextToken();
  		}
  
  		public double nextDouble() {
  			return Double.parseDouble(next());
  		}
  
  		public int nextInt() {
  			return Integer.parseInt(next());
  		}
  
  		public long nextLong() {
  			return Long.parseLong(next());
  		}
  
  	}
  }
  