本帖最后由 渡风 于 2017-6-17 00:19 编辑
此代码使用matlab编程
Problem57所用时间为: 3.1446秒
Problem57的答案为: 153%% Problem57.m
% 最后编辑时间:17-06-17 0:02
% 问题:考察2的平方根的展开
%事实上可以先求出小于等于100w的数,然后用总数减去之
% Problem57所用时间为: 3.1446秒
% Problem57的答案为: 153
function Output = Problem57()
tic
Total = 0;
Demo = 2; %分母
Elem = 3; %分子
for ii = 1:999
NewEl = Vector_Plus(Vector_Plus(Demo,Demo), Elem);
NewDe = Vector_Plus(Demo, Elem);
if length(NewEl) > length(NewDe)
Total = Total + 1;
end
disp(Demo)
Demo = NewDe;
Elem = NewEl;
end
Output = Total;
toc
disp('此代码使用matlab编程')
disp(['Problem57所用时间为: ',num2str(toc),'秒'])
disp(['Problem57的答案为: ',num2str(Output)])
end
%此程序实现两个向量的加法
function Output=Vector_Plus(a,b)
if nargin==0
a=[9 9 9 9 9 9 ];
b=[2 0];
end
L1=length(a);
L2=length(b);
L=max(L1,L2);
if L1<L2
Span=L2-L1;
Newa=[zeros(1,Span),a];
Newb=b;
elseif L1>L2
Span=L1-L2;
Newa=a;
Newb=[zeros(1,Span),b];
else
Newa=a;
Newb=b;
end
Rank=Newa+Newb;
for ii=L:-1:2
if Rank(ii)>=10
Rank(ii)=Rank(ii)-10;
Rank(ii-1)=Rank(ii-1)+1;
end
end
Biggest=0;
while (Rank(1)>=10)
if Rank(1)>=10
Rank(1)=Rank(1)-10;
Biggest=Biggest+1;
end
end
if Biggest>0
Output=[Biggest,Rank];
else
Output=Rank;
end
end
|