求T的T次方的位数

Description
T的T次方的位数问题:当T比较大的时候T^T会非常大,现在只要你求这个数一共有多少位就可以了。
Input
输入包括多组测试数据,每个测试数据只有一个数字T(T小于2的31次方)
Output
输出T的T次方的位数
Sample Input 1
3
5
Sample Output 1
2
4

分析:
假设T的T次方是一个特别大的数x,求x的位数,就是log10(x)+1
再分析x:
x就是T的T次方啊,就是T个T相乘啊,结果就成了:T个log10(T)相乘再加1

    #include<stdio.h>
    #include<math.h>
    int main()
    {
        long long int i,b=0;
        while(scanf("%lld",&b)!=EOF)
        {
            i=b;
            i=i*log10(b);
            printf("%lld\n",i+1);
        }
        return 0;
    }

总结:
开始我想的比较多,比如数据类型数据存储啥的。思路不对。。其实完全没有必要啊。。
如果记得下面这个公式,就应该知道,这个题只是让算位数而已,不用把那个超级大的数算出来。
关于log的几个基础公式:在这里插入图片描述
C语言中,有两个log函数,分别为log10和log函数,具体用法如下:
1,函数名: log10
功 能: 对数函数log,以10为底
用 法: double log10(double x); 也可以是其他数据类型
比如 log10(100)==2;
2,函数名: log
功 能: 对数函数log,以e(2.71828)为底
用 法: double log(double x);
比如log(e)==1;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值