老师报出一个5位数,同学们将他的顺序倒排得到的5位数减去原数,学生甲乙丙丁的结

题目:老师报出一个5位数,同学们将他的顺序倒排得到的5位数减去原数,学生甲乙丙丁的结果分别为34567,34056,23456,34956,问哪个结果正确。

答案:34056。

分析1:1、设原数为abcde,则倒排后数字为edcba,两数相减edcba-abcde。2、百位数字相同,如果十位数字没有向百位数字借位的话,相减后百位数字应为0,如果借位的话应为9,则先排除34567,23456,剩下34956,34056。3、两数相减得正数,所以e比a大,另外个位数字相减a-e=6可知,e比a大4,然而万位数字e-a=3,说明千位数字相减时即d-b时向万位数字借1,说明b比d大,那么十位数字相减b-d不用向百位借位,所以百位数字为0,及34056。

分析2:设原数为abcde,则将它的顺序倒排后得到的五位数edcba,在减去原数有:

=(10000e+1000d+100c+10b+a)-(10000a+1000b+100c+10d+e)

=9999e+990d-990b-9999a)

=99(101e+10d-10b-101a)

所以结果一定是99的倍数,在34567、34056、23456、34956中,只有34056具有这样的性质。

时间: 2024-10-31 15:02:51

老师报出一个5位数,同学们将他的顺序倒排得到的5位数减去原数,学生甲乙丙丁的结的相关文章

30、最高分是多少 老师想知道从某某同学当中,分数最高的是多少,现在请你编程模拟老师的询问。当然,老师有时候需要更新某位同学的成绩.

最高分是多少 老师想知道从某某同学当中,分数最高的是多少,现在请你编程模拟老师的询问.当然,老师有时候需要更新某位同学的成绩. 输入描述: 输入包括多组测试数据. 每组输入第一行是两个正整数N和M(0 < N <= 30000,0 < M < 5000),分别代表学生的数目和操作的数目. 学生ID编号从1编到N. 第二行包含N个整数,代表这N个学生的初始成绩,其中第i个数代表ID为i的学生的成绩 接下来又M行,每一行有一个字符C(只取'Q'或'U'),和两个正整数A,B,当C为'Q

java 老师想知道从某某同学当中,分数最高的是多少,现在请你编程模拟老师的询问。当然,老师有时候需要更新某位同学的成绩.

老师想知道从某某同学当中,分数最高的是多少,现在请你编程模拟老师的询问.当然,老师有时候需要更新某位同学的成绩. 输入描述: 输入包括多组测试数据. 每组输入第一行是两个正整数N和M(0 < N <= 30000,0 < M < 5000),分别代表学生的数目和操作的数目. 学生ID编号从1编到N. 第二行包含N个整数,代表这N个学生的初始成绩,其中第i个数代表ID为i的学生的成绩 接下来又M行,每一行有一个字符C(只取'Q'或'U'),和两个正整数A,B,当C为'Q'的时候, 表

给出一个区间[a, b],计算区间内“神奇数”的个数。 神奇数的定义:存在不同位置的两个数位,组成一个两位数(且不含前导0),且这个两位数为质数。 比如:153,可以使用数字3和数字1组成13,13是质数,满足神奇数。同样153可以找到31和53也为质数,只要找到一个质数即满足神奇数。

给出一个区间[a, b],计算区间内"神奇数"的个数.神奇数的定义:存在不同位置的两个数位,组成一个两位数(且不含前导0),且这个两位数为质数.比如:153,可以使用数字3和数字1组成13,13是质数,满足神奇数.同样153可以找到31和53也为质数,只要找到一个质数即满足神奇数. 输入描述: 输入为两个整数a和b,代表[a, b]区间 (1 ≤ a ≤ b ≤ 10000). 输出描述: 输出为一个整数,表示区间内满足条件的整数个数 输入例子: 11 20 输出例子: 6 1 #in

在有顺序的数列中插入一个元素后该数列仍然是有顺序的数组

/** 在有顺序的数组中插入一个元素后该数列仍然是有顺序的数组: 思路:先找到该元素的插入位置 插入数据时要先将数组中得元素后移,然后插入该元素 */ #include <stdio.h> #define  n 10 int main() { // 在有顺序的数列中插入一个元素后该数列仍然是有顺序的数列: int a[n] = {-1, 3, 6, 9, 13, 22, 27, 32, 49}; int insertVal; int insertLoc; scanf("%d"

给出一个不多于5位的整数,要求 1、求出它是几位数 2、分别输出每一位数字 3、按逆序输出各位数字,例如原数为321,应输出123

题目描述 输入 一个不大于5位的数字 输出 三行 第一行 位数 第二行 用空格分开的每个数字,注意最后一个数字后没有空格 第三行 按逆序输出这个数 样例输入 12345 样例输出 5 1 2 3 4 5 54321程序:#include<stdio.h>#include<math.h>int main(){    int a,c,d,count=0,t;    scanf("%d",&a);    d=c=a;    while(c!=0)    {  

第三周作业,关于老师的一个问题给出了一点自己的想法

你认为“实体商城不会消失”,随着物流的发展.虚拟技术的发展,实体商场到底以什么样的形式存在(在未来)的呢? 首先,对于这个问题,我觉得嘛,实体商场是不会消失的,即使是随着网购等虚拟购物方式的发展. 第一我先说下不消失的原因,问问所有有网购经历的人关于他们对于网购的评价,一定不会是百分之百满意的,甚至不能达到百分之八十,就拿买香奈儿的化妆品来说吧,如果是你在网上买,你真的会因为他说是正品,你就完全相信吗?可是如果是一个专卖店呢?一个有授权的专柜,并且现场让你亲自感受一下他的材质,那么我相信,你宁愿

给出一个字符串,将其每一个字符表示成16进制表示,要求每个十六进制为8位数

#include<iostream> #include<string.h> using namespace std; int countnum(int x) { int res=0; while(x) { x/=10; res++; } return res; } int main() { string s; while(cin>>s) { int n=s.size(); for(int i=0;i<n;i++) { int x=(int)s[i]; int c=

一个由自增运算符以及C语法顺序细节引起的bug

 一.问题描述 在编写modbus代码时发生一件由语法细节引起的bug,起因是自增运算符以及C语法顺序. 输入的数据是2233=0X08B9,高低字节顺序是0x08 0xB9, 使用modbus poll向92寄存器写入十进制数据2233. 但是经过(*reg++)*256+(reg++)之后,结果变成了0xB908. 检查内存也是0xB908. 说明reg_value写入了错误的数. 二.问题调查 反汇编后查看. 1)LDRB R2,[R5],#0X01 --> 把R5数据的低字节放入R2,并

Oracle一个事务中的Insert和Update执行顺序

今天碰到了一个奇怪的问题,是关于Oracle一个事务中的Insert和Update语句的执行顺序的问题. 首先详细说明下整个过程: 有三张表:A,B,C,Java代码中有一段代码是先在表A中插入一条数据,然后再更新表B的两个字段,更新的两个字段是特定值.并且插入和更新在一个事务中. 有个需求需要在表A添加一个Insert的行级触发器,在触发器里,插入表A一行记录后去表B查看更新的两个字段是否满足特定条件, 如果表B的两个字段同时等于特定值,则把表A和表B的数据整合下放到表C.触发器的初衷就是这样