Hello大家好我是小亦,今天是发布题解的第二篇,这时肯定有人会问,为什么作者你写的题解这么慢呢,因为没有因为(个人原因),好那么好今天我们讲一下来自NOIP2011年普及组真题名为:数字反转,其实在以前的NOIP,为什么普及组的题目都那么简单呢,有可能是后面几道题难吧QWQ好那么好我来给大家讲述一下这道题的思路如下:
其实这道题只要求我们反转一个整数的各个位数,但要同时确保结果符合整数的常见形式,即除非原数为零,否则反转后的新数的最高位数字不应为零。以下是作者个人解决这个问题的步骤和思路qwq:
-
读取输入:首先,我们需要读取输入的整数 NN。
-
确定符号:检查整数 NN 是否为负数。如果是负数,我们需要记住这个信息,因为最后输出的结果应该带有负号。
-
转换为字符串:将整数 NN 转换为字符串,这样我们可以方便地进行操作。
-
反转字符串:将字符串中的字符顺序反转。
-
去除前导零:反转后,如果字符串以零开头,我们需要去除这些前导零。这可以通过找到第一个非零字符的位置,并截取从该位置开始的子字符串来实现。
-
恢复符号:如果原整数是负数,我们需要在处理完的字符串前面添加负号。
-
输出结果:最后,输出处理后的字符串,它表示反转后的新整数。
下面是详细的步骤:
- 读取输入:从用户那里获取一个整数 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;
}
注释我就不写了很简单的,放心食用~