Предположим N = 546
и получено firstDigit = 5
. Таким образом, чтобы переместить firstDigit в последнюю позицию первым, вы должны удалить firstDigit из N . Если count = number of digits of N
, то N - (firstDigit * 10^(count-1))
даст номер без firstDigit. Для N = 546 вы получите removedFirstDigit = 46
. Тогда вам просто нужно прикрепить firstDigit к последней позиции, используя 10 * removedFirstDigit + firstDigit
, чтобы получить окончательный ответ. Следуйте этому коду для лучшего понимания,
unsigned long int N;
scanf("%lu", &N);
unsigned long int value = N;
unsigned long int firstDigit;
int count = 0;
while (N >= 10)
{
N /= 10;
firstDigit = N;
count++;
}
unsigned long int powerOfTen = 1;
for(int i=1; i<=count; i++) {
powerOfTen *= 10;
}
unsigned long int removedFirstDigit = value - (firstDigit * powerOfTen);
unsigned long int ans = 10 * removedFirstDigit + firstDigit;
printf("%lu", ans);
Вы также можете решить эту проблему, преобразовав число в строку и просто переместив первый символ в последнюю позицию.