Description
T^T这个很像一个流泪的表情是不是!其实,它是T的T次方啦~。
当T比较大的时候T^T会非常大,现在只要你求这个数一共有多少位就可以了。
Input
输入包括多组测试数据,每个测试数据只有一个数字T(0<T<2^31)
Output
请输出T^T的一共有多少位数。
Sample Input 1
3
5
Sample Output 1
2
4
C语言思路
- 因为t^t可能会特别大,我们不能直接计算出它的值。但我们可以用取对数的方法来得到它的位数。
- 在十进制,数据每向左走一位就是扩大了十倍,每一位的位权都是十的倍数。所以直接取这个数以十为底的对数,取整再加一即可。
- 注意数据类型,因为t需要较高的精度,所以应声明t为双精度浮点数,为了减小计算强度,我们可以把指数取下,放到对数前。
- 即位数为t*log10(t)+1
#include<stdio.h>
#include<math.h>
int main()
{
double t;
long int s;
while(scanf("%lf",&t)!=EOF)
{
s=t*log10(t)+1;
printf("%ld\n",(int)s);
}
return 0;
}