求m的n次方(大数)

import java.util.Scanner;

public class Main {

	public static void main(String[] args){
		// TODO Auto-generated method stub
		Scanner in = new Scanner(System.in);
		// 最大存储50位数
		int[] nums = new int[50]; // (下标0,1,2....分别代表个位,十位,百位)
		int k = 0;
		int m = 0;
		int n = 0;
		int count = 0;
		int z = 0;
		String num = "";
		System.out.println("输入m^n次方");
		System.out.print("输入m:");
		m = in.nextInt();
		System.out.print("输入n:");
		n = in.nextInt();
		z = m;
		while(z>0) // 将m按照模拟分配到相应位数
		{
			nums[count++] = z%10;
			z /= 10;
		}
		System.out.printf("%d的%d次方为:",m,n);
		if(n==0)
		{
			System.out.println(1);
		}
		else if(n>0)
		{
			for(int i=0;i= 10) // 大于等于10向前进位
					{
						sum = nums[j]/10;
						nums[j] %= 10;
					}
					if(sum != 0) // 向前进位
					{
					    // 要先求上位在加上进位
						j++;
						nums[j] *= m;
						nums[j] += sum;
					}
				}
			}
			for(int i=nums.length-1;i>=0;i--) // 找到最后一位非零,即最高位
			{
				if(nums[i] != 0)
				{
					k = i;
					break;
				}
			}
			for(int i=k;i>=0;i--)
			{
				num += nums[i];
			}
			System.out.println(num);
		}
		in.close();
	}
	
}

你可能感兴趣的:(笔记)