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<n-1;i++) // 1次已有故只需求后面n-1次
{
for(int j=0;j<nums.length;j++)
{
int sum = 0;
if(j==0)
{
nums[j] *= m;
}
else if(nums[j-1] < 10) // 若上次进位查看上次是否小于10
{
nums[j] *= m;
}
else // 若上次进位查看上次是否大于等于10,从上次位置开始
{
j--;
}
if(nums[j] >= 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();
}
}
求m的n次方(大数)
猜你喜欢
转载自blog.csdn.net/weixin_45735242/article/details/104882018
今日推荐
周排行