加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

求一个大数最左边上的数

发布时间:2020-12-14 02:38:58 所属栏目:大数据 来源:网络整理
导读:1.18题目:给出一个正整数N,请输出N^N最左边的数。 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? (1= N=1000000000); 题目分析: ? ? ? ?暴力解决是不可行的,无论从时间上还是从占用内存上来看都是A不了的,所以要用点技巧,令N^N=d.xxxx*10

1.18题目:给出一个正整数N,请输出N^N最左边的数。

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? (1= <N<=1000000000);

题目分析:

? ? ? ?暴力解决是不可行的,无论从时间上还是从占用内存上来看都是A不了的,所以要用点技巧,令N^N=d.xxxx*10^(k-1),其中k代表数的位数,那么d.xxxx=10^(lgN^N-(k-1)),再对d.xxxx取整就是最终结果。因为k等于lgN^N的整数部分加1,所以k=lg(N^N+1)取整,至此,就获得了d的计算公式d=10^(lgN^N-lg10N^N)取整,代码如下:

? ??

#include <iostream>
#include <cstring>
#include <cstdio>
#include <cmath>
using namespace std;

int main()
{   int t,N;
    double x=0;
    cin>>t;
    while(t--)
    {   cin>>N;
        x=N*log10((double)N);
        x=x-(int)x;
        x=(int)pow(10,x);
        cout<<x<<endl;
    }
    return 0;
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读