社区
C++ 语言
帖子详情
求一个思路
saintqdd
2008-10-08 03:29:09
给定连续自然数的开始A,结束B(0<A,B<=1000000),把A到B的数乘起来,乘积可以超过int32.求出这个乘积的前5个数字
比如 1*2*...10=3628800 那么前5个数字就是 36288.
...全文
70
5
打赏
收藏
求一个思路
给定连续自然数的开始A,结束B(0<A,B<=1000000),把A到B的数乘起来,乘积可以超过int32.求出这个乘积的前5个数字 比如 1*2*...10=3628800 那么前5个数字就是 36288.
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
riverboat
2008-10-08
打赏
举报
回复
晕,CSDN怎么不支持制表符。代码格式化点方便阅读:
UINT PreFive( UINT a, UINT b){
double x = 0; // 对数求和用
UINT nRet; // 返回值
for(int i =a; i <=b; i++)
x += log10(i);
if (x < 4){ // 如果数位不到5,考虑到运算精度的影响,偷个懒直接计算了
nRet = 1;
for ( int j=a; j <=b; j++) nRet *= j;
}
else{
x -= (int)x; // 把整数位换成4
x += 4;
nRet = (int) (pow(10, x));
}
return nRet;
}
riverboat
2008-10-08
打赏
举报
回复
我们知道:
lg(a*b*c*d*e) = lga + lgb + lgc + lgd + lge
lgx = lg(x/10000) + 4 (0的个数)
我的设想如下:把所有的数取对数相加,然后把结果前面的整数换成4 (当然要保证这个结果是比4大的),最后取幂,然后取整输出。
手边没有编译器,在Excel验算了下方法是可行的。
UINT PreFive( UINT a, UINT b){
double x = 0; // 对数求和用
UINT nRet; // 返回值
for(int i =a; i<=b; i++)
x += log10(i);
if (x < 4){ // 如果数位不到5,考虑到运算精度的影响,偷个懒直接计算了
nRet = 1;
for ( int j=a; j<=b; j++) nRet *= j;
}
else{
x -= (int)x;
x += 4;
nRet = (int) (pow(10, x));
}
return nRet;
}
太乙
2008-10-08
打赏
举报
回复
友情up~~
saintqdd
2008-10-08
打赏
举报
回复
速度太慢,1000000的介乘在有效的时间范围内是算不出来的,不知道有没有数学的方法来解决,而不是纯粹的计算
coverallwangp
2008-10-08
打赏
举报
回复
大数相乘,用数组存储。
算法——
求
一个
字符串的最长重复子串(
思路
+实现)
给
一个
字符串,
求
该字符串的最长重复子串,子串可以包含重叠部分 示例: 输入:"abcdabcd" 输出:"abcda"
思路
:
求
重复子串关键问题是少不了遍历该字符串和进行字符之间的比较,关键问题是在遍历的过程中怎么进行...
求
一个
数的最大公约数的三种
思路
——解题笔记
求
一个
数的最大公约数的三种
思路
——解题笔记 编程之美上的题目:
求
一个
数的最大公约数。 这道题目有三种解题
思路
,总结如下:
思路
一: 直接使用辗转相除法,这个不多介绍,代码如下: // 直接辗转...
表达式
求
值
思路
对
一个
表达式进行
求
值,需要把
C语言————
求
一个
正整数的各个位数之和
由此我们可以发现,我们是从最低位(个位)开始
求
的,每次
求
一个
数的个位数用n%10后,要向前一位
求
取这个位的数,所以n/10往前进一位,那么进两位就n/100,进三位就是n/1000以此类推。 ②控制循环的条件就是这个...
c语言下
求
平均值的几种
思路
题目 给出两个数a和b,
求
a和b的平均...看上去没什么问题,但是一旦整形溢出,这个
求
法就会出现不可预料的错误所以下面有另一种
求
法int avg = a / 2 + b / 2;但是这两种
求
法都是非常简单的,也不是我想分享的,否则这篇
C++ 语言
64,654
社区成员
250,484
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章