统计1~10000000之间只含有数字1和0的数的个数(如1,10,11,等)用pascal rep...统计1~10000000之间只含有数字1和0的数的个数(如11011,等)用pascal rep...
来源:学生作业帮助网 编辑:作业帮 时间:2024/11/07 19:35:03
统计1~10000000之间只含有数字1和0的数的个数(如1,10,11,等)用pascal rep...统计1~10000000之间只含有数字1和0的数的个数(如11011,等)用pascal rep...
统计1~10000000之间只含有数字1和0的数的个数(如1,10,11,等)用pascal rep...
统计1~10000000之间只含有数字1和0的数的个数(如11011,等)用pascal rep...
统计1~10000000之间只含有数字1和0的数的个数(如1,10,11,等)用pascal rep...统计1~10000000之间只含有数字1和0的数的个数(如11011,等)用pascal rep...
这题用数学方法,笔算就行.
思路:把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.
自己运行一下吧.
结果如下(有一些显示不下)