九度OJ 1089:数字反转 (数字反转)
时间限制:1 秒
内存限制:32 兆
特殊判题:否
提交:3059
解决:1678
- 题目描述:
-
12翻一下是21,34翻一下是43,12+34是46,46翻一下是64,现在又任意两个正整数,问他们两个数反转的和是否等于两个数的和的反转。
- 输入:
-
第一行一个正整数表示测试数据的个数n。
只有n行,每行两个正整数a和b(0<a,b<=10000)。
- 输出:
-
如果满足题目的要求输出a+b的值,否则输出NO。
- 样例输入:
-
2
12 34
99 1
- 样例输出:
-
46
NO
思路:
数字反转可借助字符串来实现。(见代码1)
更好的办法是直接反转。(见代码2)
代码1:
#include <stdio.h>
#include <string.h> #define MAX 7 void fanzhuan(char *a, char *af)
{
int i;
int len = strlen(a);
for (i=0; i<len; i++)
af[i] = a[len-1-i];
for (i=len-1; i>=0; i--)
{
if (af[i] > '0')
{
af[i+1] = '\0';
break;
}
}
} void add(char *a, char *b, char *sum)
{
int lena=strlen(a), lenb=strlen(b);
int i;
char tmp; for (i=0; i<lena/2; i++)
{
tmp = a[i];
a[i] = a[lena-1-i];
a[lena-1-i] = tmp;
}
for (i=0; i<lenb/2; i++)
{
tmp = b[i];
b[i] = b[lenb-1-i];
b[lenb-1-i] = tmp;
} for (i=lena; i<MAX; i++)
a[i] = '0';
for (i=lenb; i<MAX; i++)
b[i] = '0';
for (i=0; i<MAX; i++)
sum[i] = '0';
/*
for (i=0; i<MAX; i++)
printf("%c", a[i]);
printf("\n");
for (i=0; i<MAX; i++)
printf("%c", b[i]);
printf("\n");
//printf("a[0] = %c\n", a[0]);
//printf("b[0] = %c\n", b[0]);
//printf("sum[0] = %c\n", sum[0]);
*/
for (i=0; i<MAX-1; i++)
{
sum[i] += a[i] - 48 + b[i] - 48;
//printf("a[i] = %c\n", a[i]);
//printf("b[i] = %c\n", b[i]);
//printf("sum[i] = %c\n", sum[i]);
if (sum[i] > '9')
{
sum[i+1] = ((sum[i]-48)/10) + 48;
sum[i] = ((sum[i]-48)%10) + 48;
}
}
//for (i=0; i<MAX; i++)
// printf("%c", sum[i]);
//printf("\n"); for (i=MAX-1; i>=0; i--)
{
if (sum[i] > '0')
{
sum[i+1] = '\0';
break;
}
}
if (i < 0)
sum[1] = '\0'; int lens = strlen(sum);
for (i=0; i<lens/2; i++)
{
tmp = sum[i];
sum[i] = sum[lens-1-i];
sum[lens-1-i] = tmp;
}
} int main(void)
{
char a[10000][MAX], b[10000][MAX];
char af[MAX], bf[MAX], sum[MAX], sumf[MAX], fsum[MAX];
int n;
int i; while (scanf("%d", &n) != EOF)
{
for (i=0; i<n; i++)
scanf("%s%s", a[i], b[i]); for (i=0; i<n; i++)
{
fanzhuan(a[i], af);
//printf("af = %s\n", af);
fanzhuan(b[i], bf);
//printf("bf = %s\n", bf);
add(a[i], b[i], sum);
//printf("sum = %s\n", sum);
fanzhuan(sum, sumf);
//printf("sumf = %s\n", sumf);
add(af, bf, fsum);
//printf("fsum = %s\n", fsum);
if (strcmp(fsum, sumf) == 0)
printf("%s\n", sum);
else
printf("NO\n");
}
} return 0;
}
/**************************************************************
Problem: 1089
User: liangrx06
Language: C
Result: Accepted
Time:0 ms
Memory:976 kb
****************************************************************/
代码2:
#include <stdio.h>
#include <string.h> int fz(int a)
{
int n = 0;
while (a)
{
n = n*10 + a%10;
a /= 10;
}
return n;
} int main(void)
{
int n, i;
int a, b; scanf("%d", &n);
for (i=0; i<n; i++)
{
scanf("%d%d", &a, &b);
if (fz(a)+fz(b) == fz(a+b))
printf("%d\n", a+b);
else
printf("NO\n");
} return 0;
}
/**************************************************************
Problem: 1089
User: liangrx06
Language: C++
Result: Accepted
Time:0 ms
Memory:1020 kb
****************************************************************/
九度OJ 1089:数字反转 (数字反转)的更多相关文章
- 九度oj 题目1349:数字在排序数组中出现的次数
题目描述: 统计一个数字在排序数组中出现的次数. 输入: 每个测试案例包括两行: 第一行有1个整数n,表示数组的大小.1<=n <= 10^6. 第二行有n个整数,表示数组元素,每个元素均 ...
- 九度oj 题目1051:数字阶梯求和
题目描述: 给定a和n,计算a+aa+aaa+a...a(n个a)的和. 输入: 测试数据有多组,输入a,n(1<=a<=9,1<=n<=100). 输出: 对于每组输入,请输 ...
- 九度OJ,题目1089:数字反转
题目描述: 12翻一下是21,34翻一下是43,12+34是46,46翻一下是64,现在又任意两个正整数,问他们两个数反转的和是否等于两个数的和的反转. 输入: 第一行一个正整数表示测试数据的个数n. ...
- 【九度OJ】题目1474:矩阵幂 解题报告
[九度OJ]题目1474:矩阵幂 解题报告 标签(空格分隔): 九度OJ http://ac.jobdu.com/problem.php?pid=1474 题目描述: 给定一个n*n的矩阵,求该矩阵的 ...
- 九度OJ 1371 最小的K个数 -- 堆排序
题目地址:http://ac.jobdu.com/problem.php?pid=1371 题目描述: 输入n个整数,找出其中最小的K个数.例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4 ...
- 九度OJ 题目1384:二维数组中的查找
/********************************* * 日期:2013-10-11 * 作者:SJF0115 * 题号: 九度OJ 题目1384:二维数组中的查找 * 来源:http ...
- 九度oj题目&吉大考研11年机试题全解
九度oj题目(吉大考研11年机试题全解) 吉大考研机试2011年题目: 题目一(jobdu1105:字符串的反码). http://ac.jobdu.com/problem.php?pid=11 ...
- 九度oj题目1009:二叉搜索树
题目描述: 判断两序列是否为同一二叉搜索树序列 输入: 开始一个数n,(1<=n<=20) 表示有n个需要判断,n= 0 的时候输入结束. 接 ...
- 【九度OJ】题目1124:Digital Roots 解题报告
[九度OJ]题目1124:Digital Roots 解题报告 标签(空格分隔): 九度OJ 原题地址:http://ac.jobdu.com/problem.php?pid=1124 题目描述: T ...
随机推荐
- select函数与stdio混用的不良后果 (转)
出自:http://www.cppblog.com/mysileng/archive/2013/01/15/197284.html 今天在看UNP6.5节,学习到了select与stdio混用的后果. ...
- http协议相关面试题
浏览器输入url按回车背后经历了哪些? 1.在PC浏览器的地址栏输入一串URL,然后按Enter键这个页面渲染出来,这个过程中都发生了什么事? 1.首先,在浏览器地址栏中输入url,先解析url,检测 ...
- Struts+ibatis-学习总结一
1查询并返回list 别名映射->实体类:resultClass <select id=" selectAll" resultClass="AppLog&qu ...
- formValidator阻止提交跳转
formValidator这个前台校验插件非常好用,其中有几个很有特点的方法可以单独提出使用,效果非常棒这里要说的是其核心方法之一,阻止提交动作,先校验,校验成功再执行提交动作 $("#ph ...
- 湖南集训day2
难度:☆☆ /*显然可以前缀和*/ #include<iostream> #include<cstdio> #include<cstring> #define N ...
- Nginx+keepalived双机热备(主从模式)
简单介绍: Keepalived是Linux下面实现VRRP备份路由的高可靠性运行软件,能够真正做到 主服务器和备份服务器故障时IP瞬间无缝交接; Keepalived的目的是模拟路由器的高可用; H ...
- java多线程04----------final和static
final和static关键字 final关键字 1.final关键字在单线程中的特点: 1)final修饰的静态成员:必须在进行显示初始化或静态代码块赋值,并且仅能赋值一次. 2)final修饰的类 ...
- hdu 4300 Clairewd’s message(具体解释,扩展KMP)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4300 Problem Description Clairewd is a member of FBI. ...
- 【OpenGL】OpenGL帧缓存对象(FBO:Frame Buffer Object) 【转】
http://blog.csdn.net/xiajun07061225/article/details/7283929/ OpenGL Frame BufferObject(FBO) Overview ...
- C#如何生成release版本的程序,生成debug版本的程序
除了右击项目在生成中配置改成Release还要在顶部切换成Release