洛谷P1307 数字反转

来源:互联网 发布:linux设置终端大小 编辑:程序博客网 时间:2024/06/09 18:47

题目描述

给定一个整数,请将该数各个位上数字反转得到一个新数。新数也应满足整数的常见形式,即除非给定的原数为零,否则反转后得到的新数的最高位数字不应为零(参见样例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 beginwhile(num){ans *= 10;ans += num%10;num /= 10;}//endprintf("%d",ans);return 0;}



原创粉丝点击