关于两个数相乘, 求其为多少进制
来源:互联网 发布:淘宝嘉年华英伦休闲鞋 编辑:程序博客网 时间:2024/05/22 09:38
今天和大家来说说,我前几天碰到的一道公司的笔试题,这道题并不是我们所学的语言知识这一方面的,在笔试中碰到这种题的几率还是挺大的,若用普通的方法去算,不是不可以,结果就是一个,卷子绝对是答不完的(大神们除外哈),题目是这样的: 假设在n进制下,下面的等式成立,567*456=150216,n的值是(); A: 9 B: 10 C: 12 D: 18
解:
这道题目看起来很简单,很多人第一眼就可以直接把B排除掉,然而更让人头疼的是还有3个,而且这3个还不是那么一眼好看出来(当然,要是一眼看出来了,那出题的人岂不是个弱智?),此前也碰到过一些这样的题目,有一些稍微一算就出来了,那些题的突破点就在于跟10进制一比较,若比十进制还要小,那进制肯定是要大于10;反之,若比十进制还大,那进制就肯定是小于10的,若选项中有符合条件的就可以选出来,但对于这道题,我刚所说的方法,貌似,不太管用,所以就要用一些正规做法,不能再耍那种小聪明
1.第一步:
两位数的最后一位相乘,题目中则就是7*6=42;但是题目中最后一位却不是2而是6,是因为它不是十进制乘法,所以问题就转变成了42%n==6,得出这个式子之后,就可以把十进制排除了,但是9,12,18都可以使42%n==6,所以我们就要进行下一步。
2.第二步:
不管是多少进制的数,一个数字都可以这样来表示(例如123可以写成1*n^2+2* n^2+3),同样的道理,我们可以把这两个数分开来写567*456=(5*n^2+6*n^1+7)(4*n^2+5*n^1+6)=20*n^4+25*n^3+30*n^2+24*n^3+30*n^2+36*n^1+28*n^2+35*n^1+42=1*n^5+5*n^4+2*n^2+1*n^1+6;(这一行串串计算其实并没有这么复杂,只是计算机输入很麻烦)最后化简一下得到:*20*n^4+49*n^3+88*n^2+71*n+42==n^5+5*n^4+2*n^2+n+6,两边同时对n求个模,得到的是42%n==6;这也就认证了第一步,
3.第三步
因为前两步我们还是没有求出来n,所以我们只能继续再求%n,对刚才的式子再进行一次求模,得到的结果是(71 +42/n)%n==1,再分别吧9,12,18代进去验算一遍,结果只有18符合条件,所以答案就是18。如果当你读到这里突然卡住了,比如说:两边同时除n再模n后表达式怎么会是这样,我第一次也犯过这迷惑(当时想不应该是 (71+42/n)%n==(1+6/n)%n吗),仔细想一想,前面算的42%n==6,那么说n肯定是大于6的,所以6/n就为0,然后1模上谁都为1,所以式子就变成了结果那样,(71+42/n)%n==1;
最后说几句,当你懂得使用这种方法去解,以后碰到此类问题都将是来一个杀一个,即快速又准确。
- 关于两个数相乘, 求其为多少进制
- 两个数相乘
- 两个数相乘
- 两个数的相乘
- 两个超大数相乘
- 两个数相乘
- 两个数相乘
- 两个数相乘
- C++ 两个高精度数相乘
- 两个数组,求其中三个数和为定值(不能只从一个数组里取)
- 任意输入两个数,求其最大公约数和最小公倍数
- 两数相乘选择进制问题
- 求两个数相乘结果的位数
- 汇编-两个数相乘的实验
- 两个超大数相乘 和两个超大数相加
- 输入一些数求其平均数,以-1为结束标志
- 关于两个长整数相乘的实现
- [南阳OJ-No.56]阶乘因式分解(一)|给定两个数m,n,其中m是一个素数。 将n(0<=n<=10000)的阶乘分解质因数,求其中有多少个m。
- 字符与字节的关系。
- 将一个ANSI编码格式纯文本文件以UTF-8的形式读到另一个文件中去
- JavaScript 模板方法模式(es6)
- noip2013day2题解
- HDU6153-A Secret
- 关于两个数相乘, 求其为多少进制
- HDU6152 Friend-Graph【模拟】
- Makefile经典教程(掌握这些足够)
- 2018网易内推笔试-等差数列(python)
- gcc的参数 -I和-L 的用法
- Adapter与Activity通过接口回调进行交互
- 「网络流 24 题」航空路线问题
- NYOJ 17 单调递增最长子序列
- java与mysql时间类型对应