让我们以数字123为例。我将如何移动1以使结果数字为231?
unsigned long int N;
scanf("%lu", &N);
unsigned long int firstDigit;
while (N >= 10)
{
N /= 10;
firstDigit = N;
count++;
}
我有这段代码来标识第一位数字,但是现在我不知道如何移动它。
假设N = 546
并获得firstDigit = 5
。因此,要首先将firstDigit移到最后一个位置,必须从N中删除firstDigit。如果count = number of digits of N
,则N - (firstDigit * 10^(count-1))
将给出不带firstDigit的数字。对于N = 546,您将获得removedFirstDigit = 46
。因此,您只需要使用10 * removedFirstDigit + firstDigit
将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);
您还可以通过将数字转换为字符串并将第一个字符移动到最后一个位置来解决此问题。