洛谷P1307 数字反转
2024-10-19 15:33:16
题目描述
给定一个整数,请将该数各个位上数字反转得到一个新数。新数也应满足整数的常见形式,即除非给定的原数为零,否则反转后得到的新数的最高位数字不应为零(参见样例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;
}
最新文章
- 正则表达式校验URL
- GJM : 使用浏览器的计算力,对抗密码破解 [转载]
- 新一代服务器性能测试工具Gatling
- Count the Colors(线段树染色)
- QQ分组实现,可收缩---ExpandableListView
- udp通信C++实现的细节
- 解决github提交commit,contributions不统计显示绿色的问题
- Huffman树编码-优先队列实现
- thinkphp学习笔记2—入口文件
- PS多形式的部分之间复制“笨办法”
- JS总结之二:DOM对象控制HTML
- java多线程安全问题 静态函数的修饰
- Stars project
- 字符和字符串在Java中的旅程
- 金三银四招聘季,这些BAT以及独角兽互联网公司官方招聘网站值得关注。(个人梳理备用:附BAT以及独角兽公司官方招聘网址)
- css 鼠标选中内容背景色
- 码云-中国的github
- HDU 1575 Tr A(矩阵高速幂)
- Bearer Token的加密解密规则(OAuth中间件)
- jsp小基础归纳