Шешімін таппаған есеп!
23 Қаңтар 2010
Апталық есептер 151 рет қаралған
Бұл есеп әлі шешімін таппаған, бірақ өте қызықты, егер кімде де кім осы есепті шығарса, оған лайық сыйақымыз да бар! сондықтан ойланып көріңіздер!
Есептің қойылымы:
Сізде екі амал бар:
1. Егере сан (натурал сандар) тақ сан болса, онда оны 3 ке көбейтесіз де 1 ді қосасыз.
2.Егер сан жұп сан болса, онда оны 2-ге бөлесіз.
жоғардағы амалды кезек- кезек қолдануға болады.
мысалы:
1. 7 (тақ сан,3 ке көбейтесіз де 1 ді қосасыз)—>22(жұп сан, 2-ге бөлесіз)—>11(тақ сан,3 ке көбейтесіз де 1 ді қосасыз . жалғастра беремыз осылай)—>17—>13—>5—>1;
2. 12—>3—>5—>1;
Тұжырым мынадай: сіз мейлі қандай сан алмаыңыз, жоғардағы екі амалды алма кезек пайдалансақ, барлық сандар 1 -ге жинақталады.
осы тұжырым дұрыс па?
дәлеліңіз бар болса, хат жазыңыз: manat.mustafa@gmail.com
осы есепті шешеудің компютерге арналған программасы:(бірақ ол дәлел емес)
rsetcurs := proc(path::string, cvalue, dvalue, levelp2)
global lda, depth, c, fd, mylist, dlevel, outfile, mxng, mxlg;
#текст
if mxlg < nops(mylist) or mxng < cvalue then
RETURN(NULL)
end if;
#келесі l.d.a. елементты e стакка қой
mylist := [op(mylist), [path, levelp2, cvalue, dvalue, evalf(1/dvalue)]];
#an l.d.a. element can be a leaf, a ":b" parent or an "s" parent
#the pattern of the recursive calls at each recursive invocation tracks
#progress at each level to ensure complete exhaustion of the possibilities
#look for children of cvalue itself
if `mod`(cvalue,3) = 0 then
densout(path)
elif `mod`(cvalue,3) = 1 then
#it might be a b-step parent
rsetcurs(cat(path,"b"),4/3*cvalue-1/3,4*dvalue,levelp2+2);
else
#it must be an s-step parent
rsetcurs(cat(path,"s"),2/3*cvalue-1/3,2*dvalue,levelp2+1);
end if;
#look for same possibilites for cvalue + dvalue
if `mod`(cvalue+dvalue,3) = 0 then
densout(path)
elif `mod`(cvalue+dvalue,3) = 1 then
rsetcurs(cat(path,"b"),4/3*cvalue+4/3*dvalue-1/3,4*dvalue,levelp2+2);
else
rsetcurs(cat(path,"s"),2/3*cvalue+2/3*dvalue-1/3,2*dvalue,levelp2+1);
end if;
#look for same possibilites for cvalue + 2*dvalue
if `mod`(cvalue+2*dvalue,3) = 0 then
densout(path)
elif `mod`(cvalue+2*dvalue,3) = 1 then
rsetcurs(cat(path,"b"),4/3*cvalue+8/3*dvalue-1/3,4*dvalue,levelp2+2);
else
rsetcurs(cat(path,"s"),2/3*cvalue+4/3*dvalue-1/3,2*dvalue,levelp2+1);
end if;
#pop that exhausted l.d.a. element
mylist := subsop(nops(mylist) = NULL,mylist);
RETURN(NULL);
end proc;
немесе, Интернетте отырып сіз қалаған санды тексергіңіз келсе: сіге керек n санын енгізіңіз: жауабын аласыз:
n:
Сандық жүйе:
10 23
16