时间限制: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. ubuntu 安装自启动管理

    #sudo apt-get update #sudo apt-get install sysv-rc-conf 运行:#sudo sysv-rc-conf 也可以直接加入启动程序,例如把 /etc/i ...

  2. 现象: shell脚本中source aaa.sh时提示 source: not found

    原因: ls -l `which sh` 提示/bin/sh -> dash 这说明是用dash来进行解析的. 改回方法: 命令行执行:sudo dpkg-reconfigure dash 在界 ...

  3. wpf LookUpEdit PopupContentTemplate

    <dxg:LookUpEdit Name="searchLookUpEdit" HorizontalAlignment="Stretch" PopupHe ...

  4. 二、git remote

    为了便于管理,Git要求每个远程主机都必须指定一个主机名 git remote命令就用于管理主机名. 不带选项的时候,git remote命令列出所有远程主机 $ git remote origin ...

  5. 洛谷—— P1847 轰炸II

    https://www.luogu.org/problemnew/show/1847 题目背景 本题为轰炸数据加强版 题目描述 一个城市遭到了M次轰炸,每次都炸了一个每条边都与边界平行的矩形 在轰炸后 ...

  6. 华硕win7安装ubuntu14.04.02注意事项

    一.win7下划出给ubuntu系统的分区 1.win7自带分磁盘的工具,只需要压缩步骤即可,不需要继续分盘符格式化等操作 win7下为绿色 安装时为free space 二.制作启动盘并安装注意事项 ...

  7. android中添加只有border-left的样式

    如何在android中的边框添加只有左边边框有颜色的样式呢 1. 相应的drawable文件 <?xml version="1.0" encoding="utf-8 ...

  8. java正则表达式的知识

    /** 用途:正则表达式 * 创建人:向家康 * 创建日期:2019年4月21日 下午9:59:08 */ //有了登录界面当然少不了正则表达式啦,这是做项目必备的知识点 //通过本博客的代码,想必即 ...

  9. 用AntRun插件测试Maven的生命周期

    在用AntRun插件之前,需要了解以下几个知识点: 1.Maven的生命周期,参考:http://www.cnblogs.com/EasonJim/p/6816340.html,主要是要知道生命周期里 ...

  10. DTrace Oracle Database

    http://d.hatena.ne.jp/yohei-a/20100515/1273954199 DTrace で Oracle Database のサーバー・プロセスをトレースしてみた Oracl ...