(洛谷)题目题号P1307 [NOIP2011 普及组] 数字反转

Hello大家好我是小亦,今天是发布题解的第二篇,这时肯定有人会问,为什么作者你写的题解这么慢呢,因为没有因为(个人原因),好那么好今天我们讲一下来自NOIP2011年普及组真题名为:数字反转,其实在以前的NOIP,为什么普及组的题目都那么简单呢,有可能是后面几道题难吧QWQ好那么好我来给大家讲述一下这道题的思路如下:

其实这道题只要求我们反转一个整数的各个位数,但要同时确保结果符合整数的常见形式,即除非原数为零,否则反转后的新数的最高位数字不应为零。以下是作者个人解决这个问题的步骤和思路qwq: 

  1. 读取输入:首先,我们需要读取输入的整数 NN。

  2. 确定符号:检查整数 NN 是否为负数。如果是负数,我们需要记住这个信息,因为最后输出的结果应该带有负号。

  3. 转换为字符串:将整数 NN 转换为字符串,这样我们可以方便地进行操作。

  4. 反转字符串:将字符串中的字符顺序反转。

  5. 去除前导零:反转后,如果字符串以零开头,我们需要去除这些前导零。这可以通过找到第一个非零字符的位置,并截取从该位置开始的子字符串来实现。

  6. 恢复符号:如果原整数是负数,我们需要在处理完的字符串前面添加负号。

  7. 输出结果:最后,输出处理后的字符串,它表示反转后的新整数。

下面是详细的步骤:

  • 读取输入:从用户那里获取一个整数 NN。
  • 符号处理:如果 NN 是负数,记录这个信息,并将其转换为正数进行后续处理。
  • 转换为字符串:将整数转换为字符串,这样我们可以逐个字符地处理它。
  • 反转字符串:使用字符串反转的方法,将字符串中的字符顺序颠倒。
  • 去除前导零:检查反转后的字符串,如果以零开头,找到第一个非零数字的位置,并从该位置开始截取字符串。
  • 恢复符号:如果原整数是负数,将负号添加到处理后的字符串前面。
  • 输出结果:将最终的字符串转换为整数,并输出。

这个方法可以确保我们得到一个符合整数常见形式的反转整数,好相信大家应该基本上都懂了吧,话不多说贴代码咯,小亦再次再次在此再次再次提醒大家,抄代码可耻!

是小亦的极简代码

#include<iostream>
using namespace std;
int main(){
	int N;
	cin>>N;
	int cnt=0;
    while(n)
	{
	cnt=cnt*10+n%10;
	 N/=10;
	}
    cout<<cnt;
    
    
    return 0;
}

注释我就不写了很简单的,放心食用~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值