Skip to main content

反序输出

tip

设N是一个四位数,它的9倍恰好是其反序数(例如:1234的反序数是4321),求N的值

参考代码

#include <bits/stdc++.h>

using namespace std;

int main() {
for (int i = 1000; i <= 9999; i++) {
int x = i * 9, y = 0;
while (x > 0) {
y = y * 10 + x % 10;
x /= 10;
}
if (i == y) {
cout << i << endl;
}
}
return 0;
}

题解

反序输出可以分为两部分:拆分以及反序拼接

  • 拆分:n位整数求余10可以得到最后一位,再除以10可以得到除去上述最后一位之后的n-1位整数,循环得到每一个最后一位,完成拆分

    while (x > 0) {
    y = y * 10 + x % 10; // 拼接与拆分
    x /= 10;
    }
  • 拼接:将s中的数字拼接成整数

    int sum = 0;
    for (int i = 0; i < s.size(); i++) {
    sum = sum * 10 + s[i];
    }