aのn次方の高速のアルゴリズム、N*N個の桁数はいくらです


aのn次方程式高速アルゴリズム:nのバイナリ数を用いて計算を行う.nをバイナリで表す場合、各ビットの数は1または0である.プログラムでは,ループごとにまずnの最低ビットが1であるか0であるかを判断し,1であればresult*a演算を行い,0であればa*a演算のみを行い,nの値が0になるまでnを右にシフトしてループを継続する.このアルゴリズムは乗算の回数を減らして、読者の友达は自分で検証することができて、同じく計算の2の10回の方で、アルゴリズムの1累乗の回数は10で、アルゴリズムの2累乗の回数は4+1の個数=6だけです;1010,.複雑度はO(logn)2がベースである.
public class TestPower{
 public static void main(String args[]){
  System.out.println(f_1(5,35));
 }
 private static long f(int a,int n)
 {
	 long result=1;
	 while(n!=0)
	 {
		 if((n&1)==1)
		 {
			 result=result*a;  
		 }
		 a=a*a;
		 n=n>>1;
	 } 
	 return result;
 }
 public static long f_1(int a,int n)
 {
	 long start = System.currentTimeMillis();
	 long result=1;
	 for(int i=0;i
N*Nのアルゴリズム計算:まずNの各数字のサイクルを計算する.残りの数を計算し、最後に余剰を取ればいいです.
import java.util.Scanner;
public class Test_NN 
{
	public static int pow(int x)
	{
		int a=x%10; //a x    
		int y=a;
		int pos=1;//pos         a     
		int temp=a*a;
		while(a!=temp%10)
		{
			temp*=a;
			pos++; 
		}
		int loot=(x-1)%pos; //     。
		for(int i=0;i