23012859ex @ 2023-12-28 21:50:33
#include<stdio.h>
int main()
{
long int N;
scanf("%ld",&N);
if(N==0)
{
printf("%ld",N);
return 0;
}
//先判断这个数有几位
int count;
long int number=N;
for(int i=0;number!=0;i++)
{
number=number/10;
count++;
}
//先对0进行判断
while(N%10==0)
{
count--;
N=N/10;
}
//负数情况
int flag=0;
if(N<0)
{
flag=1;
N=0-N;
}
//进行反转
for(int i=1;i<=count/2;i++){
int n=1,m=1;
for(int j=0;j<i;j++)
n*=10;
for(int j=0;j<(count-i);j++)
m*=10;
N=N+(N%n/(n/10))*m-N%n/(n/10)*(n/10)+(N/m%10)*(n/10)-N/m%10*m;
}
//负数情况
if(flag==1) N=0-N;
printf("%d",N);
return 0;
}
by Sci_8633 @ 2023-12-30 20:18:59
@23012859ex
#include<bits/stdc++.h>
using namespace std;
string n;
bool flag;
int main(){
cin>>n;
int len=n.size();
for(int i=0;i<len;++i){
if(n[i]=='0')
flag=1;
if(flag==1)
printf("%c",'0');
break;
}
if(n[0]!='-'){
reverse(n.begin(),n.end());
int i=0;
while(n[i]=='0'){
i++;
}
n.erase(0,i);
cout<<n;
}
else{
n.erase(0,1);
len--;
reverse(n.begin(),n.end());
cout<<'-';
int i=0;
while(n[i]==0){
i++;
}
n.erase(0,i);
cout<<n;
}
return 0;
}
直接粗暴的上reverse翻转函数,再略(拼命)加一些调整即可。
100分通过AC,给你参考一下。
by restaier @ 2024-01-07 19:28:18
@Sci_8633 我几行代码解决了,答案自己运行都对,测试一个过不了
by Sci_8633 @ 2024-01-13 15:51:42
@restaier 你又是谁?
by restaier @ 2024-01-14 10:55:59
@Sci_8633 为什么我这题得分100,答案不接受,就几行
by Sci_8633 @ 2024-02-01 21:22:25
@restaier
第一:我的意思是说”23012859ex“发的帖,为什么@我的人是你?
第二:你的代码呢?