源码培训:
今日水题
描述
T^T这个很像一个流泪的表情是不是!其实,它是T的T次方啦~。
当T比较大的时候T^T会非常大,现在只要你求这个数的个位就可以啦!
输入
输入包括多组测试数据,每个测试数据只有一个数字
解题思路(一)
看到只取个位数,第一反应找规律,末尾数相当于是一个循环,只要找
出循环规律即可,简单粗暴。
try:
while 1:
n=input()
n=int(n)
l=[]
a=1
for i in range(1,n+2):
a=a*n
d=str(a)
c=int(d[-1])
if c not in l:
l.append(c)
else:
break
print(l)
if len(l)==1:
print(l[0])
else:
b=n%len(l)
print(l[b-1])
except EOFError:
pass
解题思路(二)
当然找规律是取巧方法(能AC的方法都是好方法(小声bb)),这题
我们也可以用快速幂来做,当然python超时了,转C。毕竟毛学姐出的这道题
本意是让用快速幂来解决。
python代码:
(虽然超时但还是很快的)
try:
while 1:
n=int(input())
a=n
b=n
c=1
while b!=0:
if b%2==1:
b=(b-1)/2
c*=a%10
else:
b/=2
a*=a%10
c=str(c)
c=int(c[-1])
print(c)
except EOFFrror:
pass
C代码:
#include<stdio.h>
int main()
{
int a,b,n,ans;
while(scanf("%d",&n))
{
a=n;b=n;
ans=1;
while(b!=0){
if(b%2==1){b=(b-1)/2; ans*=a%10;}
else b/=2;
a*=a%10;
}
printf("%d",ans)
}
return 0;
}