各位大哥大姐,程序高手们,帮我解一下这道难题(求算法,不要程序,Pascal)

发布时间:2019-09-02 17:26:35

各位大哥大姐,程序高手们,帮我解一下这道难题(求算法,不要程序,Pascal)

推荐回答

算法:

从1开始循环,每次将循环变量的个位后面添加数字7,得小数;在循环变量的最高位前添7,得扩大后的数。然后检查小数*5是否等于大数。是就输出结果,并结束循环。

var   n,m,a,b:longint;  f:boolean;  begin   n:=0;   f:=false; //找着结果的标记,true为已有结果,false尚未找着结果       repeat      inc(n);   //n为循环变量      a:=n*10+7;   //求出小数      b:=7;        //大数初始值为7            m:=n;   //以下根据n的位数,将数字7向高位移位(即末尾添0)      repeat        m:=m div 10;        b:=b*10;      until m=0;            b:=b+n;  //得到大数            if a*5=b then   //判断结果         begin            writeln(a);            f:=true;         end;   until f;end.计算结果是142857
以上问题属网友观点,不代表本站立场,仅供参考!