2的90次方精确值编程实现

it2022-05-09  36

刚刚笔试下来,这题没有弄明白(可能大家觉得都很简单吧),所以下来想了想,

和实验室讨论了下,方法当时也想到的。即,89个1的处理。

1=1

11=21+1

111=2(21+1)+1

1111=2(22+21+1)+1

... ...

89个1的十进制我们用10个数组存储。当低位数组表示的数超过了我们设定的值,高位进1即可。代码如下:

#include <iostream>void main(){

 int a[10]={0}; for(int i=1;i<=90;++i) {  for(int j=9;j>=0;--j)  {   a[j]*=2;  }  for(int j=9;j>=0;--j)  {   if(a[j]>10000)     //   {    a[j-1]+=1;    a[j]-=10000;   }  }  a[9]+=1; } for(int i=0;i<=9;++i) {  if(a[i]!=0)   std::cout<<a[i]; }  system("Pause");}

更大的数的求法也大同小异了

 

转载于:https://www.cnblogs.com/Akunwjy/p/bisi.html


最新回复(0)