我想知道怎么求N的N次方,这个数据是很大的,但是我要的是这个数据的最高位的数,应该有什么好的方法吧!
请大侠们帮帮忙吧!!(N <1000000000)

这个问题提出后,fallening同学便很快的在五分钟内作出了解答
log_10(N^N)=N*log_10(N) 因此,log_10(N)的第一位就是你要求的:)
我在三楼看的很疑惑,于是向同学提出问题,一天之后他给出解答
N^N=10^(Nlog(N))=10^(log(N))*10^N= 10^(log(N))*1000...0(N个0)
你要最高位置的数字,只需要计算10^(log(N))的最高位即可:)
而到这里,大家很明显就能看出这位同学的推理错误10^(N log(N))= 10^(log(N))*10^N。。。哈哈
哈哈,如果你和我一样开始笑话起这个同学,那么我们就太可悲了。。。
看看楼下的朋友们是怎么做的吧,,

hityct1:我的想法:
根据11楼的想法,改动一下。
N^N = 10^(N*log(N))中,
由于 N <1000000000,
N*log(N)取值在[0,9000000000],没有超出double数据的范围,没有益处。
设N*log(N)的整数部分为intpart,分数部分为fractpart,
则N^N = 10^(intpart + fractpart) = 10^intpart * 10^fractpart.
其中10^intpart肯定为10的倍数,不影响结果,可忽略。
所以:
10^fractpart的最高位即为结果。

不用大数,double即可满足。

#include <iostream>
#include <limits>
#include <cmath>
using namespace std;

int GetHighest(const double& n)
{
//求n^n的最高位
//注意:n取 1,2,3,...,1000000000

double intpart;
    double fractpart = modf ( n * log10(n), &intpart);

//显然分数部分在[0,1)之间,所以temp在[1,10)之间,那么整数部分即为结果
    double temp = pow( (double)10, fractpart);

modf ( temp, &intpart);

return intpart;
}

void main()
{
    //cout<<numeric_limits<double>::max()<<endl;
       
    cout<<GetHighest(1)<<endl;
    cout<<GetHighest(2)<<endl;
    cout<<GetHighest(3)<<endl;
    cout<<GetHighest(4)<<endl;
    cout<<GetHighest(5)<<endl;
    cout<<GetHighest(6)<<endl;
    cout<<GetHighest(4678)<<endl;
    cout<<GetHighest(1000)<<endl;
    cout<<GetHighest(1000000000)<<endl;
    cout<<GetHighest(1999)<<endl;
    cout<<GetHighest(999999999)<<endl;
}

关键看你专注你什么了,所以说少笑话他人,而多想想该做什么事。勤思考,多思考。
这估计也是科学的精神吧,一个人提出一个观点,虽然有点问题,可是大家受到他的启发,通过论证,而最终得到了答案。

转载于:https://www.cnblogs.com/dmesg/archive/2009/08/02/1536997.html

我想知道怎么求N的N次方相关推荐

  1. 【算法】求n的m次方(快速幂取模)

    题目 求n的m次方,n,m均为自然数. 解析 看似简单的题目,但是要想写的高效还不是那么容易想出来. 实现 unsigned int power(unsigned int a, unsigned in ...

  2. java语言不用pow函数求x的n次方_X的N次方求解——pow(x,n)实现

    最近看到这样的一个题目求X的N次方,自己想了一些解决办法,记录一下留作日后参考. 求X的N次方,首先暴力求解: int exp(int x, int n) { int ret = 1; for(int ...

  3. C语言编程练习:用pow()函数实现求x的y次方的值

    C语言 pow() 函数用来求 x 的 y 次方的值. 头文件:math.h 语法/原型: double pow(double x,double y); 参数说明: x:双精度数. y:双精度数. 返 ...

  4. 求2的n次方对1e9+7的模,n大约为10的100000次方(费马小定理)

    昨天做了一个题,简化题意后就是求2的n次方对1e9+7的模,其中1<=n<=10100000.这个就算用快速幂加大数也会超时,查了之后才知道这类题是对费马小定理的考察. 费马小定理:假如p ...

  5. 数值方法求π和π的x次方

    数值方法求π和π的x次方 求π 求lnπ 求π的x次方 重中之重:误差分析 学习了数值分析这门课,老师留了一个作业是设计数值方法求π的x次方(x范围为1到10) 具体步骤如下(老师要求的,就是想让你多 ...

  6. a的n次方的最后三位数c语言,求13的n次方(12n≤130000000000)的最后三位数,用c++编程...

    #include intmain() { longlonginti,x,y,last;/*变量last保存求X的Y次方过程中的部分乘积的后三位*/ //输入 while(scanf("%ll ...

  7. c语言学习-编写函数求x的n次方的值

    编写函数求x的n次方的值 程序流程图: 代码: #include<stdio.h> long mul(int j ,int k) {int i; long mu=1; for(i=0;i& ...

  8. (c语言)求x的y次方

    (c语言)求x的y次方,输入x和y的值,y为整数 #include<stdio.h> #include<stdlib.h> #include<math.h>//注意 ...

  9. 求次方的c语言程序,C语言编程求13的13次方的最后三位数

    求13的13次方的最后三位数 *问题分析与算法设计 解本题最直接的方法是:将13累乘13次方截取最后三位即可. 但是由于计算机所能表示的整数范围有限,用这种"正确"的算法不可能得到 ...

最新文章

  1. SQL server2000安装时被挂起的问题
  2. 遍历Collection,避免在循环中删除对象时避免ConcurrentModificationException
  3. vuex实践之路——笔记本应用(三)
  4. sourcetree回退已推送的代码
  5. 关于Django中,实现序列化的几种不同方法
  6. primefaces_轻量级Web应用程序:PrimeFaces(JSF)+ Guice + MyBatis(第1部分)
  7. SpringBoot 多环境配置
  8. 代码规范之prettier+eslint实践
  9. 沈航C语言上机实验题答案,大学大一c语言程序设计实验室上机题全部代码答案(实验报告).doc...
  10. 有人利用两个SaltStack 漏洞攻击思科 VIRL-PE 基础设施
  11. 机器学习基础:核密度估计(Machine Learning Fundamentals: Kernel Density Estimation)
  12. 安卓玩java模拟器_安卓系统智能手机玩JAVA游戏!JAVA模拟器让你痛快地玩!
  13. Java 在Word中创建表格
  14. c语言关于数组排序法和插入一个数的详细讲解
  15. ”骇客“不可缺少的电脑软件
  16. 【无标题】关于CTF的相关知识
  17. 晶圆切割机_单轴晶圆划片机特点:
  18. 论文精读及分析:Fully Convolutional Networks for Semantic Segmentation
  19. 韩寒现在这么受人关注的原因是什么?只是因为他敢发批评时政的文章吗?
  20. 【歌曲分享-第一期】Bendy and the Ink Machine

热门文章

  1. LeetCode 1298. 你能从盒子里获得的最大糖果数(BFS)
  2. 04.卷积神经网络 W1.卷积神经网络
  3. eplise怎么连接数据库_eclipse连接mysql
  4. mysql 线性表_线性表之顺序存储,基本操作
  5. Javascript复习题
  6. 图片网站用什么服务器好,网站图片与框架放在不同服务器有哪些优缺点
  7. 帝国cms搜索php分页,帝国cms V7.2自定义分页(列表分页,内容分页)样式步骤
  8. log4net异步写入日志_微信支付万亿日志在Hermes中的实践
  9. 开源开放 | 开源网络通信行业知识图谱(新华三)
  10. 论文浅尝 - ACL2020 | 用于回答知识库中的多跳复杂问题的查询图生成方法