HDU 1060 Leftmost Digit

本文介绍了一道经典的数论题目,通过巧妙运用对数(log)解决了求解大数n^n最左位数字的问题。文章提供了详细的解题思路及代码实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=1060

题目类型:数论

题目知识点:log的巧用

题目描述:给定一个大数n 输出 n^n中最左边的一个数

解题过程:错了很多次 还是一直以为是模拟或者是找规律的题目,后来发现自己错的太离谱了,这种数基本上使用log来处理的

解题思路:设 M = N^N  

    log10(M)=nlog10 (n)

     m = 10^nlog10(n)

  m的最左边的数只与      10^nlog10(n)的 小数部分有关

代码如下:

 1 #include<stdio.h>
 2 #include<math.h>
 3 int main()
 4 {   int  t;
 5    __int64  n;
 6   scanf("%d",&t);
 7    while(t --)
 8    { 
 9     
10      scanf("%I64d",&n);
11      printf("%d\n",(int)pow(10,n*log10(n)-floor(n*log10(n))));
12    
13    }
14    return 0;
15 }

 

 

 

 

转载于:https://www.cnblogs.com/zyue/archive/2012/12/20/2826714.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值