Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.io.*;
- public class Main
- {
- private static String findCount(int startTime,long bitCount,long nibbleCount,long byteCount,int time)
- {
- int i = startTime;
- while(i < time)
- {
- if(bitCount != 0)
- {
- if((i+2) < time)
- {
- nibbleCount = bitCount;
- bitCount = 0;
- i += 2;
- }
- else
- {
- break;
- }
- }
- else if(nibbleCount != 0)
- {
- if((i+8) < time)
- {
- byteCount = nibbleCount;
- nibbleCount = 0;
- i += 8;
- }
- else
- {
- break;
- }
- }
- else if(byteCount != 0)
- {
- if((i+16) < time)
- {
- bitCount = 2*byteCount;
- byteCount = 0;
- i += 16;
- }
- else
- {
- break;
- }
- }
- }
- return (bitCount + " " + nibbleCount + " " + byteCount);
- }
- private static String findCountOptimized(int time)
- {
- int blockSize = 2 + 8 + 16;
- int blocks = time/blockSize;
- int remaining = time%blockSize;
- if(remaining == 0)
- {
- blocks--;
- }
- int startTime = (blocks*blockSize);
- return findCount(startTime,(long)Math.pow(2,blocks),0,0,time);
- }
- public static void main(String[] args) throws IOException
- {
- BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
- BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
- StringBuilder outputString = new StringBuilder();
- int testCases = Integer.parseInt(br.readLine());
- while(testCases --> 0)
- {
- int time = Integer.parseInt(br.readLine());
- outputString.append(findCountOptimized(time)).append("\n");
- }
- bw.write(outputString.toString());
- bw.close();
- }
- }
Add Comment
Please, Sign In to add comment