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;