Home11月26日:t^t(2)

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语言思路

  1. 因为t^t可能会特别大,我们不能直接计算出它的值。但我们可以用取对数的方法来得到它的位数。
  2. 在十进制,数据每向左走一位就是扩大了十倍,每一位的位权都是十的倍数。所以直接取这个数以十为底的对数,取整再加一即可。
  3. 注意数据类型,因为t需要较高的精度,所以应声明t为双精度浮点数,为了减小计算强度,我们可以把指数取下,放到对数前。
  4. 即位数为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;
}

猜你喜欢

转载自blog.csdn.net/weixin_43772166/article/details/84574432
今日推荐