问题描述
- 求(3+√5)的n次方的整数部分最后3位数字(舍去小数点后面),各位大神,这编程怎么解决啊?最好是C或OC
-
最后结果如果n是10的话就输出047,100的话就输出751
解决方案
#include <math.h>
int main()
{
int n = 10;
double d = 1;
for (int i = 0; i < n; i++)
d = d * (3 + sqrt(5));
printf("%d", ((int)d) % 1000);
}
解决方案二:
100次方是个很大的数,普通精度计算是不行的。
可以试试高精度计算:
http://www.apfloat.org/apfloat/
解决方案三:
#include
int main()
{
int n = 10;
double d = 1;
if(n==0)
{
for (int i = 0; i < n; i++)
d = d * (3 + sqrt(5));
}
printf("%d", ((int)(d+0.5)) % 1000);//正数+0.5取整就是四舍五入
}
解决方案四:
#include
int main()
{
int n = 10;
double d = 1;
if(n!=0)
{
for (int i = 0; i < n; i++)
d = d * (3 + sqrt(5));
}
printf("%d", ((int)(d+0.5)) % 1000);//正数+0.5取整就是四舍五入
}
//公司催着要电脑不等于打成了等于!不好意思!
解决方案五:
如果你要求小数后面的精度是9位的话,1阶的时候有10位数字,乘法得到的数据如果没有被省略(且没有进位)应该是19位数,如果对精度要求很高的话,现有的乘法都不能用,你可以自己自定义乘法来编写这个程序,或者申请一个较大的内存块来存储每次计算的结果,当你要算n=100时,你要求的计算精度还那么高的话,你的计算结果估计要存储10*2^100这么多位的数据
时间: 2024-08-30 02:34:03