T^T問題求個位數(快速冪||位運算||找規律)
阿新 • • 發佈:2018-11-26
原始碼培訓:
今日水題
描述
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;
}