九度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 ...
随机推荐
- 转 C++中不能声明为虚函数的有哪些函数
传送门 C++中不能声明为虚函数的有哪些函数 常见的不不能声明为虚函数的有:普通函数(非成员函数):静态成员函数:内联成员函数:构造函数:友元函数. 1.为什么C++不支持普通函数为虚函数? 普通函数 ...
- 转 Django+Bootstrap练习--我的类博客系统开发
转自: http://blog.sina.com.cn/s/blog_7e050dc80102w312.html 本文记录了一个类博客网站从无到有的搭建过程,同时也是我入门django以及再次入门前端 ...
- poj 1274(网络流解二分图的最大匹配)
The Perfect Stall Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 22539 Accepted: 100 ...
- LeetCode OJ——Pascal's Triangle II
http://oj.leetcode.com/problems/pascals-triangle-ii/ 杨辉三角2,比杨辉三角要求的空间上限制Could you optimize your algo ...
- HDU 5794 A Simple Chess(杨辉三角+容斥原理+Lucas定理)
题目链接 A Simple Chess 打表发现这其实是一个杨辉三角…… 然后发现很多格子上方案数都是0 对于那写可能可以到达的点(先不考虑障碍点),我们先叫做有效的点 对于那些障碍,如果不在有效点上 ...
- 济南day6
上午 60+0+5 数组开小了 暴力打挂了 下午 0+0+30 T1爆零 //T1,T2文件打错了.... 暴力打挂
- BZOJ1003物流運輸 DP + SPFA
@[DP, SPFA] Description 物流公司要把一批货物从码头A运到码头B.由于货物量比较大,需要\(n\)天才能运完.货物运输过程中一般要转 停好几个码头.物流公司通常会设计一条固定的运 ...
- BZOJ2002弹飞绵羊
动态树LCT模板题 #include<cstdio> #include<cctype> #include<algorithm> using namespace st ...
- 数据结构------------------二叉查找树(BST)的java实现
数据结构------------------二叉查找树(BST)的java实现 二叉查找树(BST)是一种能够将链表插入的灵活性和有序数组查找的高效性相结合的一种数据结构.它的定义如下: 二叉查找树是 ...
- SQL-基础学习3--通配符:LIKE,%,(_); 拼接:+,||,concat;
第六课 用通配符进行过滤 6.1 LIKE操作符 通配符本身实际上是SQL的WHERE子句中有特殊含义的字符,SQL支持几种通配符.为在搜索子句中使用通配符,必须使用LIKE操作符.LIKE指示DB ...