#include <stdio.h>
#include <math.h>
unsigned reverse_N_digits(unsigned last_N_digits, unsigned digits) {
unsigned reverse = 0;
while (digits--) {
reverse = reverse * 10 + last_N_digits % 10;
last_N_digits /= 10;
}
return reverse;
}
unsigned reverse_last_digits(unsigned x, unsigned digits) {
unsigned pow10 = (unsigned)ceil(pow(10, digits));
unsigned last_N_digits = x % pow10;
unsigned without_last_N_digits = x - last_N_digits;
return without_last_N_digits + reverse_N_digits(last_N_digits, digits);
}
int main(void) {
printf("847421 : %u\n", reverse_last_digits(847421, 3));
printf("981 : %u\n", reverse_last_digits(981, 2));
printf("530006 : %u\n", reverse_last_digits(530006, 4));
printf("31 : %u\n", reverse_last_digits(31, 2));
printf("7 : %u\n", reverse_last_digits(7, 3));
return 0;
}
/*
run:
847421 : 847124
981 : 918
530006 : 536000
31 : 13
7 : 700
*/