My issue
Cant seem to understand what test case I am failing . I would really appreciate if some one with pro pack can check it out for me … I have dry ran the code like more than 15 times but still cant still cant seem to get it
My code
#include <bits/stdc++.h>
using namespace std;
int main(){
int t;
cin >> t;
for (int i = 0; i < t; i++) {
int x, y;
cin >> x >> y;
int c = 0;
int diff = abs(x - y);
int mi = min(x, y);
int ma = max(x, y);
if (mi % 10 > 3 && mi % 10 <= 9) {
c = c + 1;
} else if (mi % 10 == 3) {
c = c + 3;
} else if (mi % 10 >= 0 && mi % 10 <= 2) {
c = c + 3;
}
if (diff > 10) {
c = c + (3 * ((ma / 10) - (mi / 10) - 1));
}
if (ma % 10 == 9) {
c = c + 3;
} else if (ma % 10 >= 3 && ma % 10 < 9) {
c = c + 2;
}
else if (ma % 10 == 2) {
c = c + 1;
}
cout << c << endl;
}
return 0;
}
Problem Link: NUM239 Problem - CodeChef
@justdoit01
The logic is quite simple u have to iterate from l to r and while iterating when u get a number whole %10 == 2 or 3 or 9 then increase your count.
Yes i thought about that and it already worked but i wanted to optimize it so … i broke a for eg: 46 87 into 3 parts ( 46 to 50 , 50 to 80 , and 80 to 87 )
for 1st part (Here it is 46):
There can be 3 cases : end digit is {0 to 2} , end digit is {3 to 8} , end digit is {9}
| | |
\/ \/ \/
it will have exactly 3 it will has exactly 2 it will have exactly1
beautiful numbers beautiful numbers beautiful numbers
{for is 42(or 40 or 41) similar to example
to 50 will have 3 num of 42 to 50
namely 42 43 and 49
part 2 : In a set of 10 number there are exactly 3 beautiful numbers .
for Eg: 50 to 60 will have 3 beautiful numbers , 60 to 70 will have 3 and so on…
So , if we can calculate the number of sets , can then multiply them "3" .
For eg of 46 to 87 ,we Have 50 to 80 , i.e "3" sets (50 to 60 , 60 to 70 and 70 to 80) , So we can multiply it by ' 3 ' to get total number of beautiful numbers between 50 to 80 .
Formula that I created for number of sets : [ (2_num / 10) - (1_num/10) - 1 ]
Note: This formula wont work for [(2_num - 1_num) / 10 ] as we are depending on "/10" to
convert the number to its right most 10th place integer .... i.e 46 will be converted
40 rather than 50 same goes for number like 49 too.
part 3 : It is more or less same as part 1 … but with a few conditional adjustments
SO if we calculate the total number of beautiful number between 46 to 87 through my method ,
We get :
1 + 9 + 2 === 12 Beautiful Number
| | |
\/ \/ \/
46 to 50 50 to 80 80 to 87
@justdoit01
ok got it
for 13 - 20 its should be 2 your code is giving 3
1 Like
yeh i did see it later … thank you for taking ur time to find it out for me 
1 Like