Which test case is failing

#include
using namespace std;

long long invertToMini(long long N){
long long rev=0,reva=0,r,;

while(N>0){
 
	r=N%10;

     	if(r>4 and r<9)
	   r=9-r;
	

	rev=rev*10+r;
	N=N/10;  
}

while(rev>0){
	r=rev%10;
	reva=reva*10+r;
	rev=rev/10;  
}
return reva;

}
int main() {
long long cN;
cin>>cN;

cout<<invertToMini(cN);
return 0;

}

hi @pushkarsingh5247_4b1a78f1d102c737,
if digit is >5 flip that digit otherwise don’t flip
also check some corner cases
a) first digit should not be zero so if first digit is 9 then it should remain unchanged
b) if number is 0 only then output should be 9, not 0.

The logic behind this Problem was pretty simple as we can invert any digit ( 9 - digit) but we need to invert only such digits that will eventually end up giving the smallest number possible.

So, we should invert only digits greater then or equal to 5 as after inverting them, the result gives us smallest number.

For e.g.,

9 - 5 = 4 viz, smaller than the original number that was 5.

9 - 8 = 1 viz, smaller than the original number that was 8.

but 9 - 1 = 8 viz, greater than the original number that was 1.

Important point to consider is, After inverting any digits their should not be trailing zeros that means, if their is 9 at the starting of the number then it must remain the same

Also input can be quite big so, u need to capture the number in long long int in c++ and long in java.

for implementation difficulties refer https://ide.codingblocks.com/s/658154