没想到t*10 + num % 1这个地方,想复杂了,想到了先计算位数,然后%得到个数再乘以10的位数-1的次方来计算反序。
#include<bits/stdc++.h>
using namespace std;
#define int long long
#define endl "\n"
signed weishu(int m){
int sum=0;
while(m>0){
sum++;
m=m/10;
}
return sum;
}
signed huiwen(int n){
int s=0;
//判断N这个数有几位
int sum=weishu(n);
//求出反序之后的数
while(n>0){
s=s+n%10*pow(10,sum-1);//1是10的0次方,10是10的1次方,故记得让位数减一
n=n/10;
sum--;
}
return s;
}
signed main(){
std::ios::sync_with_stdio(false);
cin.tie(0);cout.tie(0);
int n;cin>>n;
for(int i=1;i<=n;i++){
if(huiwen(i)==i)cout<<i<<endl;
}
return 0;
}