时间限制: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
来源:
2005年上海交通大学计算机研究生机试真题

思路:

数字反转可借助字符串来实现。(见代码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:数字反转 (数字反转)的更多相关文章

  1. 九度oj 题目1349:数字在排序数组中出现的次数

    题目描述: 统计一个数字在排序数组中出现的次数. 输入: 每个测试案例包括两行: 第一行有1个整数n,表示数组的大小.1<=n <= 10^6. 第二行有n个整数,表示数组元素,每个元素均 ...

  2. 九度oj 题目1051:数字阶梯求和

    题目描述: 给定a和n,计算a+aa+aaa+a...a(n个a)的和. 输入: 测试数据有多组,输入a,n(1<=a<=9,1<=n<=100). 输出: 对于每组输入,请输 ...

  3. 九度OJ,题目1089:数字反转

    题目描述: 12翻一下是21,34翻一下是43,12+34是46,46翻一下是64,现在又任意两个正整数,问他们两个数反转的和是否等于两个数的和的反转. 输入: 第一行一个正整数表示测试数据的个数n. ...

  4. 【九度OJ】题目1474:矩阵幂 解题报告

    [九度OJ]题目1474:矩阵幂 解题报告 标签(空格分隔): 九度OJ http://ac.jobdu.com/problem.php?pid=1474 题目描述: 给定一个n*n的矩阵,求该矩阵的 ...

  5. 九度OJ 1371 最小的K个数 -- 堆排序

    题目地址:http://ac.jobdu.com/problem.php?pid=1371 题目描述: 输入n个整数,找出其中最小的K个数.例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4 ...

  6. 九度OJ 题目1384:二维数组中的查找

    /********************************* * 日期:2013-10-11 * 作者:SJF0115 * 题号: 九度OJ 题目1384:二维数组中的查找 * 来源:http ...

  7. 九度oj题目&amp;吉大考研11年机试题全解

    九度oj题目(吉大考研11年机试题全解) 吉大考研机试2011年题目: 题目一(jobdu1105:字符串的反码).    http://ac.jobdu.com/problem.php?pid=11 ...

  8. 九度oj题目1009:二叉搜索树

    题目描述: 判断两序列是否为同一二叉搜索树序列 输入:                        开始一个数n,(1<=n<=20) 表示有n个需要判断,n= 0 的时候输入结束. 接 ...

  9. 【九度OJ】题目1124:Digital Roots 解题报告

    [九度OJ]题目1124:Digital Roots 解题报告 标签(空格分隔): 九度OJ 原题地址:http://ac.jobdu.com/problem.php?pid=1124 题目描述: T ...

随机推荐

  1. C++11学习笔记(5) —— override and final (转)

    原文转自 http://blog.csdn.net/fire_lord/article/details/8540592 1.简介 C++为我们提供了继承和虚函数的重写特性. 在派生类中,重写虚函数不强 ...

  2. linux之Deamon进程创建及其进程exit,_exit,return之间的区别

    Dameon进程又被称做守护进程,一般来说他有以下2个特点: 1.生命周期非常长,一旦启动,一般不会终止,直到系统推出,不过dameon进程可以通过stop或者发送信号将其杀死 2.在后台执行,不跟任 ...

  3. linux sleep函数

    应用程序: #include usleep(n) //n微秒 Sleep(n)//n毫秒 sleep(n)//n秒 驱动程序: #include mdelay(n) //milliseconds 其实 ...

  4. ATT汇编与Intel汇编的区别,摘自《深入分析linux内核源码》一书

    2.6.1 AT&T与Intel汇编语言的比较 我们知道,Linux是Unix家族的一员,尽管Linux的历史不长,但与其相关的很多事情都发源于Unix.就Linux所使用的386汇编语言而言 ...

  5. 不需 porting 就可充電的 charger ic。

    Origin : 今天同事問我一個關於配有 RT9458 charger ic 的手機的問題, 這手機可能要送到廠商那, 需要 porting charger ic, 看了一下,跟他說這個充電部份不需 ...

  6. 在路上:安全公司“跨界”SD-WAN

    编者按:本文是SDNLAB“企业+”特别报道之一.“企业+”是SDNLAB重点打造的栏目,汇聚信息行业运营商.设备商.互联网公司.软件公司.集成公司.融创投资公司.科研院所等企业,重新定义IT行业撮合 ...

  7. java retry:详解

    发现 今天在探秘线程池原理知识点,在阅读JDK源码时遇到程序代码中出现如下代码,因为之前没有遇到过,于是特地记录下来并谷歌了一番,后面我自己做了一些简要的验证和分析. 验证 网上溜达一番发现,这ret ...

  8. 配置tomcat启动参数-Dfile.encoding=UTF-8后,IDEA控制台乱码

    配置tomcat启动参数-Dfile.encoding=UTF-8后,IDEA控制台出现乱码 解决方法: 在idea的bin目录(如:D:\JetBrains\IntelliJ IDEA 2018.1 ...

  9. codeforces A. Wrong Subtraction

    A. Wrong Subtraction time limit per test 1 second memory limit per test 256 megabytes input standard ...

  10. Maven的构建/测试/打包

    继上一篇http://www.cnblogs.com/EasonJim/p/6809882.html使用Maven创建工程后,接下来是使用Maven进行构建/测试/打包. 在打包之前,先熟悉一下Mav ...