HDU1060_计算n^n的最左边的数字

题目大意: 计算n^n的最左边的那个数的大小。 解题思路: m = n ^ n,把m化成10的double次方。然后分解为整数部分跟小数部分,取小数部分计算。即pow(double(10), decimals), C++中pow函数如果第二个参数是double型的,那么第一个参数也是double型的,而且返回值也是double型的,注意下。还有化解的时候num * log10(num)这个时候int会溢出,所以强制类型转换的时候要用__int64 吐吐槽: 这道题目好久以前就做过了,可是还是忘记了,重新做了一遍,以此为训。 代码:
#include
#include
using namespace std;
int main(void)
{
	int n;
	scanf("%d", &n);
	while(n--)
	{
		int num;
		scanf("%d", &num);
		double b = (double)num * log10((double)num);
		double decimals = b - (__int64)b;
		printf("%d\n", (int)pow((double)10, decimals));
	}
	return 0;
}
原文地址:https://www.cnblogs.com/cchun/p/2520219.html