永发信息网

如何将一个整数分解成2的n次幂相加的形式,如100=2^6+2^5+2^2,PASCAL,附带说明。

答案:2  悬赏:30  手机版
解决时间 2021-02-19 21:19
  • 提问者网友:不要迷恋哥
  • 2021-02-19 00:50
数学方法与PASCAL
最佳答案
  • 五星知识达人网友:何以畏孤独
  • 2021-02-19 02:28
利用短除法写出除以2後的商及馀数即可表示之
2 │ 100
商-> 2 │ 50 0 <-馀数
商-> 2 │ 25 0 <-馀数
商-> 2 │ 12 1 <-馀数
商-> 2 │ 6 0 <-馀数
商-> 2 │ 3 0 <-馀数
商 1 1 <-馀数

100=1*2^6+1*2^5+0*2^4+0*2^3+1*2^2+0*2+0=2^6+2^5+2^2
全部回答
  • 1楼网友:过活
  • 2021-02-19 03:37
//大概能过n=10000的数据,够了吗,不够我再优化。 var   n,i,j,dig:longint;   a:array[1..1000000]of longint; begin   read(n);   a[1]:=1;   dig:=1;   for i:=1 to n do begin     for j:=1 to dig do a[j]:=a[j]shl 1;//shl 1等价于*2,只是运行速度比*2略快一点     for j:=1 to dig-1 do begin       inc(a[j+1],a[j]div 10);       a[j]:=a[j]mod 10;     end;     while a[dig]>9 do begin       inc(dig);       a[dig]:=a[dig-1]div 10;       a[dig-1]:=a[dig-1]mod 10;     end;   end;   for i:=dig downto 1 do write(a[i]); end.
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯