整数幂

整数幂(多实例测试)

Time Limit: 1 Sec  Memory Limit: 128 MB
Submit: 1073  Solved: 610

Description

求A^B的最后三位数表示的整数(1<=A,B<=1000)

Input

n个测试实例,每个实例给出两个正整数A,B

Output

输出A^B的最后三位(没有前导0)

Sample Input

2

2 3

12 6

Sample Output

8
984

Code:

 1 import java.util.Scanner;
 2 import java.math.BigInteger;
 3 public class Main{
 4
 5     public static void main(String[] args) {
 6         Scanner input=new Scanner(System.in);
 7         int n=input.nextInt();
 8         while(n-->=0){
 9             BigInteger A=input.nextBigInteger();
10             int B=input.nextInt();
11             A=A.pow(B);              //将求得的大数A的B次幂赋值给A;
12             int len=A.toString().length(); //将大数A转换成String型求其长度.
13             if(len<=3)
14                 System.out.println(A.intValue());  //若A长度小于3 则利用intValue()方法将A转化为int型.
15             else{
16                 A=new BigInteger(A.toString().substring(len-3,len));  //截取大数A中后三位数字
17                 System.out.println(A.intValue());      //利用intValue()方法将A转化为int型.
18             }
19         }
20     }
21 }
时间: 2024-10-12 03:45:04

整数幂的相关文章

更快的求整数幂算法

相信整数幂运算作为一个算法演变的例子是再合适不过的了为了节省访客们宝贵的学习时间省去介绍递归等可能涉及到的初级概念的定义.同时如果发现文中有错误的地方请敞开衣服指正. 因为在测试性能时合适的测试数据是必要的,所以本文用C++的大数类进行演示. 点击获取C++大数类源码 这里我们先列一下会提到的算法分析技术: 动态规划 减治法 测试平台: Linux g++ 4.7 原始递归方法 这就不花时间赘述什么了. BigInteger pow(BigInteger x, int N) { if (N ==

算法笔记01--归纳法之整数幂

整数幂 算法1:对实数x的n次幂设计一个有效的算法.一种直接的方法是对x用迭代方法自乘n次,这种方法十分低效,因为它需要O(n)乘法.一个高效的方法可以用如下方法推出,令m=n/2,假设已经知道如何计算x^m.那么有两种情况:如果n是偶数,那么x^n = (x^m)^2:否则x^n = x(x^m)^2. 算法2:令n的二进制表示为dn-1.....d1,d0.从y=1开始,由n的高位至地位扫描,如果二进制数字为0,就对y平方:如果为1就对y平方并乘x.这就产生了递归算法EXPREC. 时间复杂

对于整数幂打表的一个技巧

如果我们需要在某个整数区间打一个幂表的话,有一个方法比较好用,比如我们要在1~5000之间,打满     1^1,    1^2,    1^3...............    1^5000     2^1,    2^2,    2^3...............    2^5000     3^1,    3^2.    3^3...............    3^5000     .......     ....... 5000^1,    5000^2,    5000^3, 

面试官:判断一个数是否为2的整数次幂

判断一个正整数是否是2的整数幂(如4是2的2次方,返回true:5不是2的整数次幂,则返回false).要求性能尽可能高. 第一种考虑(乘法) 创建一个中间变量temp,初始值是1,然后进入一个循环,每次循环都让temp和目标值进行比较,如果相等,则说明目标是2的整数次幂, 如果不相等,则让temp乘以2,继续循环比较,直到temp的值大于目标整数时,说明整数不是2的整数次幂. 比如:18 1*2=2;2比18小继续 2*2=4;4比18小继续 4*2=8;8比18小继续 8*2=16;16比1

10G 个整数,乱序排列,要求找出中位数。内存限制为 2G。

题目:在一个文件中有 10G 个整数,乱序排列,要求找出中位数.内存限制为 2G.只写出思路即可(内存限制为 2G的意思就是,可以使用2G的空间来运行程序,而不考虑这台机器上的其他软件的占用内存). 关于中位数:数据排序后,位置在最中间的数值.即将数据分成两部分,一部分大于该数值,一部分小于该数值.中位数的位置:当样本数为奇数时,中位数=(N+1)/2 ; 当样本数为偶数时,中位数为N/2与1+N/2的均值(那么10G个数的中位数,就第5G大的数与第5G+1大的数的均值了). 分析:明显是一道工

10G 个整数找出中位数,内存限制为 2G

题目:在一个文件中有 10G 个整数,乱序排列,要求找出中位数.内存限制为 2G.只写出思路即可(内存限制为 2G的意思就是,可以使用2G的空间来运行程序,而不考虑这台机器上的其他软件的占用内存). 关于中位数:数据排序后,位置在最中间的数值.即将数据分 成两部分,一部分大于该数值,一部分小于该数值.中位数的位置:当样本数为奇数时,中位数=(N+1)/2 ; 当样本数为偶数时,中位数为N/2与1+N/2的均值(那么10G个数的中位数,就第5G大的数与第5G+1大的数的均值了). 分析:明显是一道

在一个文件中有10G个整数,乱序排列,要求找出中位数

 题目:在一个文件中有 10G 个整数,乱序排列,要求找出中位数.内存限制为 2G.只写出思路即可(内存限制为 2G的意思就是,可以使用2G的空间来运行程序,而不考虑这台机器上的其他软件的占用内存). 关于中位数:数据排序后,位置在最中间的数值.即将数据分成两部分,一部分大于该数值,一部分小于该数值.中位数的位置:当样本数为奇数时,中位数=(N+1)/2 ; 当样本数为偶数时,中位数为N/2与1+N/2的均值(那么10G个数的中位数,就第5G大的数与第5G+1大的数的均值了). 分析:明显是一道

【Ural 1057】幂和的数量

[题目描述] 写一个程序来计算区间[X,Y]内满足如下条件的整数个数:它恰好等于K个互不相等的B的整数幂之和. 举个例子.令X=15,Y=20,K=2,B=2.在这个例子中,区间[15,20]内有3个整数恰好等于两个互不相等的2的整数幂之和: 17=2^4+2^0 18=2^4+2^1 20=2^4+2^2 [输入格式] 输入文件的第一行有两个空格隔开的整数X,Y(1<=X<=Y<=2^31-1). 第二行有两个整数K,B(1<=K<=20,2<=B<=10).

大整数算法

本文主要整理了几个常用的大整数的算法:大整数加法大整数乘法大整数阶乘大整数幂其实大体的思路都差不多,都是用数组来存储大整数.以下的代码仅仅实现功能,并没有充分详细的参数判断,在实际运用中,肯定是需要考虑的. 大整数相加 1 #include <stdio.h> 2 #include <string.h> 3 #define N 1000 4 void get_num(int *array) 5 { 6 char str[N] = {'\0'}; 7 int loop = 0; 8