求解析,代码功能为求N的N次方的个位数。该如何解决
求解析,代码功能为求N的N次方的个位数。
#include<stdio.h>
int main()
{
int n,t,i,pro;
long m;
scanf("%d",&n);
while(n--)
{
pro=1;
scanf("%ld",&m);
t=(m-1)%4;
m=m%10;
for(i=0;i<=t;i++)
pro*=m;
printf("%d\n",pro%10);
}
return 0;
}
------解决方案--------------------
任意整数的整数次幂在个位上都有一个特色:随着指数的递增,个位上会出现重复,重复的周期分别为1、2、4。
所以,程序里求个位幂只需要计算最多4次乘法。t=(m-1)%4就是起这个作用的。
后面的东西就没啥需要说的了吧?
#include<stdio.h>
int main()
{
int n,t,i,pro;
long m;
scanf("%d",&n);
while(n--)
{
pro=1;
scanf("%ld",&m);
t=(m-1)%4;
m=m%10;
for(i=0;i<=t;i++)
pro*=m;
printf("%d\n",pro%10);
}
return 0;
}
------解决方案--------------------
任意整数的整数次幂在个位上都有一个特色:随着指数的递增,个位上会出现重复,重复的周期分别为1、2、4。
所以,程序里求个位幂只需要计算最多4次乘法。t=(m-1)%4就是起这个作用的。
后面的东西就没啥需要说的了吧?