الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

نتيجة السؤال الحادي عشر -11-

بدأه أحمد أبو عبد البر في 22 نوفمبر 2013 · 4 رد · 1,909 مشاهدة · في المسابقات البرمجية
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

سلام عليكم

 

كان السؤال الحادي عشر ما نصه :

متجر يبيع العسل في عبوات ، يبيعه بالعبوة الواحدة أو بصندوق سعته عبوتان أو بصندوق سعته خمس عبوات أو بصندوق سعته عشر عبوات أو بصندوق سعته عشرون عبوة أو بصندوق سعته خمسون عبوة  أو بصندوق سعته مئة عبوة أو بصندوق سعته مئتا عبوة

 

إذا طلب زبون 200 عبوة عسل فإحدى طرق البيع ان نعطيه :

صندوقا من سعة 50 عبوة

وصندوقا من سعة 100 عبوة

وصندوقين من سعة 20 عبوة

وصندوقا من سعة 10 عبوات

 

كم طريقة يمكن أن نبيع بها العسل لهذا الزبون

 

والجواب هو 73682

 

وقد أجاب عنه :

 

مصطفى

 

الحل الذي كتبته أنا كان عن طريق الحلقات المتداخلة وهذا هو

public class Test
    {

        public static void main ( String[] arg )
            {
                int count = 0;
                for( int i = 0 ; i <= 200 ; i ++ )

                    {
                        for( int j = 0 ; j <= 200 ; j += 2 )

                            {
                                for( int e = 0 ; e <= 200 ; e += 5 )

                                    {
                                        for( int r = 0 ; r <= 200 ; r += 10 )

                                            {
                                                for( int t = 0 ; t <= 200 ; t += 20 )

                                                    {
                                                        for( int y = 0 ; y <= 200 ; y += 50 )


                                                            {
                                                                for( int u = 0 ; u <= 200 ; u += 100 )

                                                                    {
                                                                        for( int o = 0 ; o <= 200 ;
                                                                             o += 200 )
                                                                            {
                                                                                if( ( i + j + e + r + t + y + u + o ) == 200 )

                                                                                    {
                                                                                        count ++;
                                                                                    }
                                                                            }
                                                                    }
                                                            }
                                                    }
                                            }
                                    }
                            }
                    }
                System.out.println ( count );

            }
}

حل الأخ مصطفى كان أفضل في انتظاره

vVIfFr.gif

مدونتي



إذا رأيتموني غبت فأطلت الغياب فربما أكون قد انتقلت عن الدنيا إلى الآخرة

فما أحوجني إلى دعوة صالحة من أخ لي كريم

 

http://www.tvquran.com/

 

LoGeCom

أول برنامج عربي للمحاسبة والتجارة وإدراة المخازن يعمل على اللينكس والماك والويندوز 

#2

وهذا حل الأخ مصطفى

//الحمد لله :)
#include<cstdio>
int mosty=0;
int i[10]={0};
int L[10]={200,100,50,20,10,5,2,1};
//2813044
void test(int x,int level)
{
	if(level==7)
	{
		//i[7]=x;for(int w=0;w<8;w++)printf("%i ",i[w]);putchar(10);
		mosty++;
		return;
	}
	for(i[level]=0;1;i[level]++)
	{
		if(x<i[level]*L[level])
			return;
		test(x-i[level]*L[level],level+1);
	}
}
int main()
{
	const int x = 200;
	test(x,0);
	printf("%d\n",mosty);
	return 0;
}
1

vVIfFr.gif

مدونتي



إذا رأيتموني غبت فأطلت الغياب فربما أكون قد انتقلت عن الدنيا إلى الآخرة

فما أحوجني إلى دعوة صالحة من أخ لي كريم

 

http://www.tvquran.com/

 

LoGeCom

أول برنامج عربي للمحاسبة والتجارة وإدراة المخازن يعمل على اللينكس والماك والويندوز 

#3

لا اريد ان انقد ولكن الجوابان خاطئان، اين حسبت 200 عبوة من نوع الواحد ,او 100 عبوة من نوع اثين  ،انت فقط قمت بجمع جميع الاحتمالات لاختيار ثماني عبوات فقط التي تساوي 200 

كما قلت فربما اختار 200 عبوة من حجم واحد كيف جمعت 200 عبوة من نوع واحد

والحل يكون ب 200 من الحلقات التي تبدا من واحد حتى 8 والبرنامج يحتاج ايام لاستخراج الحل مع ايقاف الحلقة عند بلوغ 201 ايضا البرنامج ياخذ وقت كثير وانا صارلي اسبوع ابحث في التباديل والتوافيق ولم افلح وانت تقول بان الحل فقط 8 حلقات!!!!!!!!!!!!

#4
zaraki_kenpache كتب:

لا اريد ان انقد ولكن الجوابان خاطئان، اين حسبت 200 عبوة من نوع الواحد ,او 100 عبوة من نوع اثين  ،انت فقط قمت بجمع جميع الاحتمالات لاختيار ثماني عبوات فقط التي تساوي 200 

كما قلت فربما اختار 200 عبوة من حجم واحد كيف جمعت 200 عبوة من نوع واحد

والحل يكون ب 200 من الحلقات التي تبدا من واحد حتى 8 والبرنامج يحتاج ايام لاستخراج الحل مع ايقاف الحلقة عند بلوغ 201 ايضا البرنامج ياخذ وقت كثير وانا صارلي اسبوع ابحث في التباديل والتوافيق ولم افلح وانت تقول بان الحل فقط 8 حلقات!!!!!!!!!!!!

اذا اضفت سطر لطباعة النتائج ستجد ان كل الاحتمالات اخذت في الحسبان

System.out.println(i+","+j +","+e+","+r+","+t+","+y+","+u+","+o+")");

أنا أيضا حاولت بطرق مختلفة لكن لم اظن الحل سيكون بهذه السهولة

 

200 عبوة من نوع 1

200,0,0,0,0,0,0,0)

و هو الاحتمال الاخير

و 100 عبوة من نوع 2

0,200,0,0,0,0,0,0)

و هو الاحتمال رقم 1784 في  ناتج هذا الكود

تم تعديل هذه المشاركة بواسطة العمدة11 في 23 نوفمبر 2013 في 05:14

#5
اقتباس

 

اين حسبت 200 عبوة من نوع الواحد

في الحلقة الأولى وهي

for( int i = 0 ; i <= 200 ; i ++ )

إذ وصلت الحلقة إلى 200

دخلنا على الحلقة التي بعدها بداية  عند 0

ثم دخلنا على التي بعدها بداية عند 0

إلى الثامنة بداية عند ال 0

 

عندئذ سيكون المجموع هو 200 عبوة مفردة ;)

vVIfFr.gif

مدونتي



إذا رأيتموني غبت فأطلت الغياب فربما أكون قد انتقلت عن الدنيا إلى الآخرة

فما أحوجني إلى دعوة صالحة من أخ لي كريم

 

http://www.tvquran.com/

 

LoGeCom

أول برنامج عربي للمحاسبة والتجارة وإدراة المخازن يعمل على اللينكس والماك والويندوز 

مواضيع مشابهة