最后结果如果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这么多位的数据