T^T问题求个位数(快速幂||位运算||找规律)

源码培训:

今日水题

描述

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;
}

猜你喜欢

转载自blog.csdn.net/qq_43064070/article/details/84498959