1. 程式人生 > >Home11月26日:t^t(2)

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;
}