程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> HDU 1061 Rightmost Digit題解

HDU 1061 Rightmost Digit題解

編輯:C++入門知識

求一個大數N^N的值的最右邊的數字,即最低位數字。

簡單二分法求解就可以了。

不過注意會溢出,只要把N % 10之後,就不會溢出了,不用使用long long。


#include 
int rightMost(int n, int N)
{
	if (n == 0) return 1;
	int t = rightMost(n / 2, N);
	t = t * t % 10;;
	if (n % 2) t *= N;
	return t % 10;
}

int main()
{
	int T, n;
	scanf("%d", &T);
	while (T--)
	{
		scanf("%d", &n);
		printf("%d\n", rightMost(n, n%10));
	}
	return 0;
}



  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved