What could be the possible error in the code mentioned here? I am just not able to get the correct answer.
#include <bits/stdc++.h>
using namespace std;
#define NEWLINE "\n";
typedef long long ll;
int main()
{
ios::sync_with_stdio(false);
ll T;
cin >> T;
ll N;
for (ll i = 0; i < T; i++)
{
cin >> N;
ll time = N;
ll bit = 0, nibble = 0, byte = 0, num = 0;
static ll byteArr[3];
if(time <= 26)
{
if(time <= 2)
bit++;
else if(time <=10 && time > 2)
nibble++;
else if(time <= 26 && time > 10)
byte++;
}
else if(time > 26)
{
if(time % 26 == 0){
num = pow(2, time/26);
byte = num;
}
else
{
ll remainder = time % 26;
num = pow(2, (time - remainder)/26);
if(remainder >= 0 && remainder <= 2)
bit += num;
else if(remainder > 2 && remainder <= 10)
nibble += num;
else byte = num;
}
}
byteArr[0] = bit;
byteArr[1] = nibble;
byteArr[2] = byte;
cout << byteArr[0] << " " << byteArr[1] << " " << byteArr[2] << NEWLINE;
}
return 0;
}
I have covered all the test cases, even the edge ones, and still am getting a wrong answer. What could be the possible error in the code above?
When I input 26 the code will output (0 0 1), for 130 (0 0 32), for 140 (0 32 0), and for 1600
(0 0 2305843009213693952). What am I missing here?