上机题目(初级)-高次方数的尾数(Java)

题目如下:

代码如下:

package huawei;

public final class Demo {
	/*
	功能: 求解M的N次方的最后三位数(M,N均大于10)
	输入参数:
	    int M:M > 10
	    int N:N > 10
	返回值:
	    M的N次方的最后三位数
	*/

	public static int getLast3DigitsOfMN(int M, int N)
	{

		int result = 1;
	    for(int i = 0;i < N;++i){
	        result = (result * (M % 1000)) % 1000;
	    }
	    return result;

	}

}

当m, n很大时, m的n次方无法用基本的数据类型表示...分析可以发现, 乘积的最后三位只与乘数和被乘数的最后三位有关, 而与高位无关, 所以每次将乘积结果对1000取模即可...

用循环的方式求M的N次方,每次做乘法之后先除以1000取余,不然会造成数据溢出,这个题目就是考这个知识点(数据溢出)。

时间: 2024-08-24 21:38:06

上机题目(初级)-高次方数的尾数(Java)的相关文章

2015华为机试——高次方数的尾数

题目描述: 求解M的N次方的最后三位数(M,N均大于10). 接口说明 原型: int GetLast3DigitsOfMN(int M, int N); 输入参数: int M:M > 10 int N:N > 10 返回值: M的N次方的最后三位数 解题思路: 思路一:先求M的N次方,然后M^N%1000求最后三位数,但是M的N次方很有可能会溢出,导致输出结果异常或错误. 思路二:思路一不行的话,我们得找到他对应的等效方法,M每乘M就对1000求余,其最后三位数是等效的. 代码如下: pu

上机题目(高级)- 电子词典(Java)

要求 输入英文翻译成中文 输入help输出所有单词 import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.InputStreamReader; import java.util.Iterator; import java.util.Map; import java.util.Scanner; import java.util.TreeMap; publi

[LeetCode] Power of Three 判断3的次方数

Given an integer, write a function to determine if it is a power of three. Follow up:Could you do it without using any loop / recursion? Credits:Special thanks to @dietpepsi for adding this problem and creating all test cases. 这道题让我们判断一个数是不是3的次方数,在Le

华为初级——自守数

描述:自守数是指一个数的平方的尾数等于该数自身的自然数.例如:25^2=625,76^2=5776,9376^2=87909376.请求出n以内的自守数的个数 接口说明 原型:unsigned int CalAutomorphicNumbers(unsigned int n); 输入参数:unsigned int n 返回值:n以内自守数的数量 知识点: 题目来源:内部整理 练习阶段:初级 运行时间限制:10sec 内存限制:128MByte 输入:输入一个整数 输出:输出一个整数 样例输入:2

统计指定数字的个数,并将其按权值10的次方数相加

题目描述: 正整数A的"DA(为一位整数)部分"定义由A中所有DA组成新的整数PA.例如,给定A=3862767,DA=6,则A的"6部分"PA是66,因为A中有2个6 现给定:A.DA.B.DB,请编写程序计算PA+PB 输入描述: 输入在一行中依次给出A.DA.B.DB,中间以空格分隔,其中0<A,B<1010 输出描述: 在一行中输出PA+PB的值 如图,就是查询第一个整数中6的个数,2,再变成66:查询第二个整数3的个数,3,再变成333 再相加

[LeetCode] Power of Four 判断4的次方数

Given an integer (signed 32 bits), write a function to check whether it is a power of 4. Example: Given num = 16, return true. Given num = 5, return false. Follow up: Could you solve it without loops/recursion? Credits:Special thanks to @yukuairoy fo

九度oj 题目1050:完数

题目1050:完数 时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:8778 解决:3612 题目描述: 求1-n内的完数,所谓的完数是这样的数,它的所有因子相加等于它自身,比如6有3个因子1,2,3,1+2+3=6,那么6是完数.即完数是等于其所有因子相加和的数. 输入: 测试数据有多组,输入n,n数据范围不大. 输出: 对于每组输入,请输出1-n内所有的完数.如有案例输出有多个数字,用空格隔开,输出最后不要有多余的空格. 样例输入: 6 样例输出: 6 1 #include <io

九度oj 题目1060:完数VS盈数

题目1060:完数VS盈数 时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:6461 解决:2426 题目描述: 一个数如果恰好等于它的各因子(该数本身除外)子和,如:6=3+2+1.则称其为“完数”:若因子之和大于该数,则称其为“盈数”.求出2到60之间所有“完数”和“盈数”. 输入: 题目没有任何输入. 输出: 输出2到60之间所有“完数”和“盈数”,并以如下形式输出:E: e1 e2 e3 ......(ei为完数)G: g1 g2 g3 ......(gi为盈数)其中两个数之间

[LeetCode] Power of Two 判断2的次方数

Given an integer, write a function to determine if it is a power of two. Hint: Could you solve it in O(1) time and using O(1) space? 这道题让我们判断一个数是否为2的次方数,而且要求时间和空间复杂度都为常数,那么对于这种玩数字的题,我们应该首先考虑位操作 Bit Operation.在LeetCode中,位操作的题有很多,比如比如Repeated DNA Seque