• 洛谷P1307 数字反转


    题目描述

    给定一个整数,请将该数各个位上数字反转得到一个新数。新数也应满足整数的常见形式,即除非给定的原数为零,否则反转后得到的新数的最高位数字不应为零(参见样例2)。

    输入输出格式

    输入格式:

    输入文件名为reverse.in 。

    输入共1 行,一个整数 N。

    输出格式:

    输出文件名为reverse.out 。

    输出共1行,一个整数,表示反转后的新数。

    输入输出样例


    输入样例#1:

    123

    输出样例#1:

    321


    输入样例#2:

    -380

    输出样例#2:

    -83


    说明

    数据范围

    -1,000,000,000≤ N≤ 1,000,000,000 。

    noip2011普及组第一题


    WriteUp:



    参考AC代码:

    用队列进行输出:

    #include <cstdio>
    #include <iostream>
    #include <cstdlib>
    #include <cmath>
    #include <queue>
    
    using namespace std;
    
    int main(void){
    	int a;
    	int flag = 0;
    	queue<int> que;
    	scanf("%d",&a);
    
    	if (a>0)
    	{
    		flag = 0;
    	}else if (a==0)
    	{
    		printf("0");
    		return 0;
    	}else{
    		flag = 1;
    		a = -a;
    	}
    
    	while (a!=0)
    	{
    		if (a%10==0 && que.size()==0)
    		{
    			a /= 10;
    			continue;
    		}
    		que.push(a%10);
    		a /= 10;
    	}
    
    	if (!flag)
    	{
    		while (!que.empty())
    		{
    			printf("%d",que.front());
    			que.pop();
    		}
    	}else{
    		printf("-");
    		while (!que.empty())
    		{
    			printf("%d",que.front());
    			que.pop();
    		}
    	}
    	return 0;
    }


    使用数字反转公式(简单):

    #include <cstdio>
    #include <iostream>
    #include <cmath>
    #include <cstdlib>
    
    using namespace std;
    
    int main(void)
    {
    	int num;
    	int ans = 0;
    	scanf("%d",&num);
    
    	//reverse process begin
    
    	while(num){
    		ans *= 10;
    		ans += num%10;
    		num /= 10;
    	}
    
    	//end
    
    	printf("%d",ans);
    	return 0;
    }



  • 相关阅读:
    数组的基本操作
    面向对象
    继承
    JavaBean规范
    JVM内存模型
    数组的排序
    this
    访问控制权限
    数组
    方法的重载
  • 原文地址:https://www.cnblogs.com/csnd/p/12897084.html
Copyright © 2020-2023  润新知