统计1~10000000之间只含有数字1和0的数的个数(如1,10,11,等)用pascal rep...

问题描述:

统计1~10000000之间只含有数字1和0的数的个数(如1,10,11,等)用pascal rep...
统计1~10000000之间只含有数字1和0的数的个数(如11011,等)用pascal rep...
1个回答 分类:综合 2014-10-31

问题解答:

我来补答
这题用数学方法,笔算就行.思路:把10000000看做二进制数,就是128,因此一共有128-1+1=128个
证明:我们先把前几个只含有数字1和0的数列出来: 1   10   11   100   101   110   111……发现了吗?它们正好与前几个二进制数一一对应.因此就很好算了.
推广:     如果题目是“统计1~10000000之间只含有数字0、1、2的数的个数”,只要将10000000当做三进制数就行了!
验证:   我们用一个枚举算法来写程序.
var s:string;    i,j,sum:longint;    flag:boolean;
begin for i:=1 to 10000000 do begin  flag:=true;  str(i,s);  for j:=1 to length(s) do   if (s[j]<>'0') and (s[j]<>'1') then    begin     flag:=false;    break;   end;  if flag then   begin    inc(sum);    writeln(s);  end; end; writeln('sum=',sum); readln;end.
自己运行一下吧.结果如下(有一些显示不下)
 
 
展开全文阅读
剩余:2000