Տրված է ուղղանկյուն, որի կողմերը արտահայտված են բնական թվերով: Այն պետք է բաժանել մինիմալ քանակությամբ քառակուսիների:Մեզանից պահանջվում է գտնել ստացված քառակուսիների քանակը:Մշակել ալգորիթմ և C++ գրել ծրագիր:
Տրված է ուղղանկյուն, որի կողմերը արտահայտված են բնական թվերով: Այն պետք է բաժանել մինիմալ քանակությամբ քառակուսիների:Մեզանից պահանջվում է գտնել ստացված քառակուսիների քանակը:Մշակել ալգորիթմ և C++ գրել ծրագիր:
Տրված է ուղղանկյուն, որի կողմերը արտահայտված են բնական թվերով: Այն պետք է բաժանել մինիմալ քանակությամբ քառակուսիների:Մեզանից պահանջվում է գտնել ստացված քառակուսիների քանակը:Մշակել ալգորիթմ և C++ գրել ծրագիր:
Moonwalker (12.11.2011)
Ես մի բան մտածեցի՝ չգիտեմ ինչքանով ա ռացիոնալ, բայց հիմա կգրեմ: Միայն ալգորիթմը ասեմ՝ հեսա պիտի դուրս գամ:
Սկզբում ուղղանկյան փոքր էջի չափով մեծ էջից քառակուսի ենք կտրում:
Հետո ստացվում ա մի նոր ուղղանկուն:
Հիմա նորից՝ փոքր էջի չափով մեծ էջից քառակուսի ենք կտրում:
.............
Ու դա անում ենք էնքան ժամանակ, քանի դեռ նոր ստացվող ուղղանկյունը քառակուսի չէ:
Մի հատ էլ նկար տեղադրեմ, որ ավելի պարզ լինի
![]()
Շնորհակալություն...Սրանից բացի ուրիշ ինչ կառաչարկեք
Կամ դու խնդիրը ճիշտ չես հասկացել, կամ ես:
Ես այսպես եմ հասկացել.
Ուղղանկյունուց ստանալ քառակուսիներ՝ այնպես, որ էդ ստացված քառակուսիների մակերեսների գումարը լինի հավասար ուղղանկյան մակերեսին:
Եվ այնպես հաշվել, որ էդ քառակուսիների քանակը ինչքան հնարավոր է քիչ լինի:
Մի քիչ գեղավարի գրեցի, բայց դե գրեցի ընենց, ոնց ես եմ հասկացել![]()
Varzor (14.11.2011)
Քառո՞րդ ենք փակում![]()
VisTolog (14.11.2011)
Եթե m ≠ n, ապա հնարավոր են երկու դեպք m<n և m>n: Ուղղանկյունից կտրենք ամենամեծ մակարեսով քառակուսին,որի կողմերը բնական թվեր են: Քառակուսին կտրելուց հետո ուղղանկյան չափերը կլինեն հետևյալը. Մեծ կողմը կփոքրանա քառակուսու կողմի երկարությամբ, իսկ փոքրը չի փոխվի: Փնտրվող քառակուսիների քանակը կհաշվվի որպես այն քառակուսիների քանակ, որոնց վրա կկտրվի ստացված ուղղանկյունը և այդ ամենին գումարած մեկ( կտրած քայակուսին): Ստացված ուղղանկյանը կկիրառենք նույն դատողությունները:
Ուրիշ ինչ ալգորիթմ կառաչարկեք բացի սրանից
Էս ինչեր եք խոսքւմ, բան չեմ հասկանում
Եթե ուղղանկյան կողմերը բնական թվեր են` M և N, ապա ամենափոքր խառակուսին կլինի 1 կողմով քառակուսին, հետևաբար կունենանք M x N հատ այդպիսի քառակուսիներ:
Ու սկսվում է հակադարձ գործընթացը` փոքր քառակուսիների միավորման:
Իսկ ալգորիթմը կլինի մոտավորապես հետևյալը.
1. որոշում ենք որ թիվն է մեծ ` օրինակ M>N: Ըստ դրա կատարում ենք կողմերի վերադասավորում:
2. n` Առաջին քառակուսու կողմը: Տակը մնաց` M-N=>M1 և N=>N1 կողմերով ուղղանկյունը:
Այս երկու գործողությունները շարունակվում են այնքան, մինչև i-երորդ քայլում կողմերից որևէ մեկը չհավասարվի 1-ի: Արդյունքում տակը կմնա Ni x Mi չափերով ուղղանկյուն, որտեղ օր. Ni=1, հետևաբար տակը մնաց Mi հատ քառակուսի: քանակը ստացվեց ` i + Mi
Ծրագիրը C++-ով գրեմ տամ, թե արդեն հասկանալի է?
Վերջին խմբագրող՝ Varzor: 14.11.2011, 14:56:
Լոխ մունք ենք, մնացածը` լոխ են...
Այս պահին թեմայում են 1 հոգի. (0 անդամ և 1 հյուր)
Էջանիշներ