1. 程式人生 > >51Nod - 1004 n^n的末位數字

51Nod - 1004 n^n的末位數字

pri out .com 快速叠代 位數 div sin int scanf

51Nod - 1004 n^n的末位數字

給出一個整數N,輸出N^N(N的N次方)的十進制表示的末位數字。 Input
一個數N(1 <= N <= 10^9)
Output
輸出N^N的末位數字
Input示例
13
Output示例
3

題解:

    末尾數字,所以在快速叠代冪的時候,只需要考慮末尾數字即可。

#include <iostream> 
#include <cstdio> 
#include <cstdlib> 
#include <cstring> 
using namespace std;  

int main(){
	int n, cnt, ans; 
	while(scanf("%d", &n) != EOF){
		cnt = n; 
		ans = 1; 
		n = n % 10; 
		while(cnt){
			if(cnt%2 == 1){
				ans = (ans * n) % 10; 
			}
			n = n * n % 10; 
			cnt = cnt / 2; 
		}
		printf("%d\n", ans%10 );
	}
	return 0; 
}

  

51Nod - 1004 n^n的末位數字