0
点赞
收藏
分享

微信扫一扫

hdu 1018

你的益达233 2023-07-13 阅读 57

#include<iostream> 

 #include<cstdio> 

 #include<cmath> 

 using namespace std; 

 int main() 

 { 

     int i,n,cas; 

     double  f; 

     cin>>cas; 

     while(cas--) 

     { 

         f=0.0; 

         cin>>n; 

         for(i=2;i<=n;i++) 

             f+=log10(i*1.0); 

         int ans=f+1; 

         cout<<ans<<endl; 

     } 

     return 0; 
}
/******还是比较有意思的一道题目,比如123456=10^5+1.23456,取对数后为5+log10(1.23456)所以位数为取对数后的小数取整
再加1,不过算阶乘时要注意,当n很大时可能会溢出,所以还是得转换为对数,只需要进行n次加法和乘法就行了,
再次体会到了对数的神奇,记得加头文件cmath***/

举报

相关推荐

0 条评论