前人的代码(数学思想很重要)

/*
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的最高位即为结果(因为0<=fractpart<1,所以1<=10^fractpart<10,所以10^fractpart的整数部分就是答案)
*/


#include<iostream>
#include<cmath>
using namespace std;
double solve(double n)
{
double intpart,fractpart,t;
//double modf (double, double*); 将参数的整数部分通过指针回传, 返回小数部分
fractpart = modf(n*log10(n),&intpart);
t = pow(10,fractpart);
modf(t,&intpart);
return intpart;
}
int main()
{
double n;
while(cin>>n)
{
if(n!=0)
cout<<solve(n)<<endl;
}
return 0;
}

关于<cmath>的modf函数


#include<stdio.h>
#include<math.h>
int main(void)
{
double number=123.54;
double fraction,integer;
fraction=modf(number,&integer);
//整数部分
printf("%lf\n%lf\n",number,integer);
//小数数部分
printf("%lf\n%lf",number,fraction);
return 0;
}

Resutlt:

123.540000
123.000000
123.540000
0.540000

前人的代码(数学思想很重要),布布扣,bubuko.com

时间: 2024-08-04 00:26:19

前人的代码(数学思想很重要)的相关文章

DZ3.2文章内容页代码注释,很不错的。

DZ3.2文章内容页代码注释,很不错的.<!--{template common/header}--><!--e之路网络科技--文章页--> <script type="text/javascript" src="{$_G['setting']['jspath']}forum_viewthread.js?{VERHASH}"></script><script type="text/javascript&

简单的数学思想

l  筛法求素数 把从1开始的.某一范围内的正整数从小到大顺序排列, 1不是素数,首先把它筛掉.剩下的数中选择最小的数是素数,然后去掉它的倍数.依次类推,直到筛子为空时结束.如有: 1 2 3 4 5 6 7 89 10 11 12 13 14 1516 17 18 19 20 21 22 23 24 2526 27 28 29 30 1不是素数,去掉.剩下的数中2最小,是素数,去掉2的倍数,余下的数是: 3 5 7 9 11 13 1517 19 21 23 25 27 29 剩下的数中3最小

数学思想:为何我们把 x&#178;读作x平方

要弄清楚这个问题,我们得先认识一个人.古希腊大数学家 欧多克索斯,其在整个古代仅次于阿基米德,是一位天文学家.医生.几何学家.立法家和地理学家. 为何我们把 x2读作x平方呢? 古希腊时代,越来越多的无理数(不可公度比)的发现迫使希腊人不得不研究这些数.它们确实是数吗?它们出现于集合论证过程中,而整数和整数之比则既出现于几何也出现于一般的数量研究中.用于可公度的长度.面积和体积的几何证明,怎样才能推广用之于不可公度的这些量呢? 欧多克索斯引入了变量这个概念.量跟数不同,数是从一个跳到另一个,例如

我习惯把代码写得很整齐

我喜欢写C#代码,不喜欢写JS代码和SQL.相比于C#,总感觉JS和SQL写起来乱糟糟的. 最近做了几个统计页面,不得不拼接很长的SQL,我总是尽量把SQL写的层次分明,容易阅读. 应该还有别的实现方法,比如在数据库中写存储过程.函数,但是我不想维护数据库,在当前数据库中没有什么存储过程和函数的情况下,我总是尽量避免在数据库中写存储过程和函数. 别人实现复杂的统计功能的时候,是不是也是这么做的呢?有什么更好的方法? using System; using System.Collections.G

数学思想

数学思想,是指现实世界的空间形式和数量关系反映到人们的意识之中,经过思维活动而产生的结果.数学思想是对数学事实与理论经过概括后产生的本质认识:基本数学思想则是体现或应该体现于基础数学中的具有奠基性.总结性和最广泛的数学思想,它们含有传统数学思想的精华和现代数学思想的基本特征,并且是历史地发展着的.通过数学思想的培养,数学的能力才会有一个大幅度的提高.掌握数学思想,就是掌握数学的精髓. 函数思想,是指用函数的概念和性质去分析问题.转化问题和解决问题.方程思想,是从问题的数量关系入手,运用数学语言将

HDU 4635 Strongly connected(强连通分量缩点+数学思想)

题意:给出一个图,如果这个图一开始就不是强连通图,求出最多加多少条边使这个图还能保持非强连通图的性质. 思路:不难想到缩点转化为完全图,然后找把它变成非强连通图需要去掉多少条边,但是应该怎么处理呢……有人给出这样的答案,找到分量中点数最少的块,把它的所有入边都去掉……好像是对的,但是万一这个块本来就有一个入度怎么办?这个边是不可以删的啊.所以我觉得这种办法是有点的问题的,所以最靠谱的方法还是斌哥他们给出的方法,最后的时候把点分成两个集合x和y,x和y本身都是完全图块,然后让x中的每一个点都指向y

计算机起源的数学思想

实际上在离散数学的学习中,我们已经了解到这样的一些人物,乔治.布尔,康托,哥德尔,图灵,冯诺依曼.而我们实际的离散数学的教学中,本身太注重于知识本身的学习,而忽略了知识是如何被发现产生出来,以及不同的知识之间曾经的渊源和启发关系.而对于启迪思想来说,后者显然更为有力. 莱布尼茨之梦 早在17世纪的莱布尼茨就有一个伟大的构想,他希望可以将人类的思维像代数运算那样符号化,规则化,从而让笨的人通过掌握这样的规则变得聪明,更进一步的制造出可以进行思维运算的机器,将人类从思考中解放.从莱布尼茨为微积分所确

(转)dedecms代码详解 很全面

dedecms代码研究(1)开篇dedecms 相信大家一定都知道这个cms 系统,功能比较强大,有比较完善的内容发布,还有内容静态化系统,还有就是它有自己独特的标签系统和模板系统.而模板系统也是其他cms系统比较难模仿的的东西,这个东西还是需要一点开发功力和技巧的.本系列文章就研究一下dedecms的这套系统,挖掘一下看看里面有什么好东西.建议大家先了解一下dedecms的功能.自己先动手用一下,对系统功能有个大概了解.本文先带领大家了解一下dedecms的代码和功能架构.其实,dedecms

Android 项目代码重构思想总结

代码重构的根本思想是模块化.灵活性.高内聚.低耦合. Android 项目代码重构: 将与业务逻辑无关的公共基本资源.工具类等等抽取到一个lib 工程中,主程序中只放与业务逻辑相关的代码和工具类: 1.将公共资源类进行抽取,包括: string.xml color.xml styel.xml drable  中自定义的shap .selector.anim 这些资源基本是和程序业务逻辑无关的,将其放到主工程中只会增加代码量影响对程序业务逻辑的理解. 工程项目所特有的资源可以采取继承于lib库工程