تم النشر منذ 20 Sep 2013 (معدل) أعلن اليوم عن نتيجة السؤال الثاني وهي 137846528820 والفائزون هم نرجو من المشاركين وضع مشاركاتهم لتتم الفائدة تم تعديل 20 Sep 2013 بواسطه أحمد أبو عبد البر 1 شارك هذا الرد رابط المشاركة شارك الرد من خلال المواقع ادناه
0 قام بالرد منذ 20 Sep 2013 الحمد لله ...بصراحة أول ما قمت بحل السؤال على الآلة الحاسبة للويندوز .. وذلك لأن المسألة هي مسألة Combinatorics أي طرق العد ..المسألة بشكل مجرد : اختيار 20 خانة من أصل 40 .. (وذلك لأنه لا داعي لاختيار العشرين الأخرى فهي إجبارية )وهذا يعني 40C20 وهي عملية رياضية بحتة ناتجها هو 40! مقسوماً على (20! * 20! ) ومن أجل تعميم المسألة : nCk تساوي : n! مقسوماً على !(k! * (n-k ولكن وفقاً لشروط المسابقة فهذا هو الكود : import java.math.BigInteger; public class secind {public static BigInteger factorial(int x){BigInteger X=new BigInteger(Integer.toString(x));while(x!=0){X=X.multiply(new BigInteger(Integer.toString(x)));x--;}return X;}public static void main(String[] args) {System.out.println(factorial(40).divide(factorial(20).multiply(factorial(20))));} } والحمد لله رب العالمين ...ملاحظة : أنا درست الcombinatorics من سلسلة عن الdiscrete mathematics للدكتور Arthur Benjamen (يهودي للأسف ) وهي 25 فيديو موجوده على الرابط التالي ... أتمنى أن تستفيدو منها فهي بحق رائعة ..والله ولي التوفيق 1 شارك هذا الرد رابط المشاركة شارك الرد من خلال المواقع ادناه
0 قام بالرد منذ 20 Sep 2013 (معدل) long long calc(int y,int x) { if(y==0 || x==0) return 1; if(x==1 && y==1) return 2; if(y==1) return 1+calc(y,x-1); long long first = 1+ calc(1,x-1); for(int i=2;i<=y;i++) first += calc(i,x-1); return first; } //137846528820 تم تعديل 20 Sep 2013 بواسطه abdou001 1 شارك هذا الرد رابط المشاركة شارك الرد من خلال المواقع ادناه
0 قام بالرد منذ 20 Sep 2013 Dim n, r, d As Double Private Sub cmd_Click() lbl.Caption = combin(40, 20) End Sub Private Function combin(n As Double, r As Double) As Double combin = fact(n) / (fact(r) * fact(n - r)) End Function Public Function fact(n As Double) As Double d = 1 For i = 1 To n d = d * i Next i fact = d End Function 0 شارك هذا الرد رابط المشاركة شارك الرد من خلال المواقع ادناه
0 قام بالرد منذ 20 Sep 2013 def getList(entry): result = [] a = entry while a > 0: c = a res = 0 while c >= 0: res += c c -= 1 result.append(res) a -= 1 return result def getResult(entry): result = 0 for i in entry: result += i return result def get_total(entry): result = [] for i in range(len(entry)): tmp = 0 for a in entry[i:]: tmp += a result.append(tmp) return result def get_combinations(strLength): if not (strLength % 2) == 0: return 0 elif strLength == 2: return 2 elif strLength == 4: return 6 else: length = int(strLength / 2) + 1 result = getList(length) for i in range(length - 4): result = get_total(result) return getResult(result) print(get_combinations(40)) 0 شارك هذا الرد رابط المشاركة شارك الرد من خلال المواقع ادناه
0 قام بالرد منذ 20 Sep 2013 //-------------------------------------- //Language : C# //Full Name : Abdelalim ZERKANI //Solution : 137846528820 //-------------------------------------- //Factorial double fact(int n) { if (n == 0) return 1; else return n * fact(n - 1); } double C(int n, int p) { //MessageBox.Show("n: " + n + " fact n - p: " + fact(n - p)); return fact(n)/(fact(p)*(fact(n-p))); } double getNumber(int zeroNbr = 20,int oneNbr = 20) { return C(zeroNbr + oneNbr, zeroNbr); } 0 شارك هذا الرد رابط المشاركة شارك الرد من خلال المواقع ادناه
0 قام بالرد منذ 21 Sep 2013 يا سلام وانا كنت عم بحاول اعمل مصفوفة احفظ فيها كل الارقام الصالحة ويطلع انو بدكم ياه بس عدد الارقام الصالحة؟؟؟ :wub: يا ديعان 30 فنجان قهوة اللي شربتهم وانا بحاول :lol: 0 شارك هذا الرد رابط المشاركة شارك الرد من خلال المواقع ادناه
0 قام بالرد منذ 21 Sep 2013 أخ سامر .. في العادة تكون الأسئلة عن إيجاد عدد الاحتمالات .. ويستحيل كتابة برنامج لكتابة كل الاحتمالات (غالبا ) فمجرد التفكير بوجود عدد من الحروف ( وليس السلاسل حتى ) بنفس عدد الاحتمالات أمر خيالي :) 0 شارك هذا الرد رابط المشاركة شارك الرد من خلال المواقع ادناه
0 قام بالرد منذ 21 Sep 2013 ويستحيل كتابة برنامج لكتابة كل الاحتمالات (غالبا)- التالي سيكون سؤال يحتم عليك التحقق من جميع الإحتمالات الممكنة :D 0 شارك هذا الرد رابط المشاركة شارك الرد من خلال المواقع ادناه
0 قام بالرد منذ 21 Sep 2013 - التالي سيكون سؤال يحتم عليك التحقق من جميع الإحتمالات الممكنة :Dانا رايح احضر القهوة :lol: 0 شارك هذا الرد رابط المشاركة شارك الرد من خلال المواقع ادناه
0 قام بالرد منذ 21 Sep 2013 أويستحيل كتابة برنامج لكتابة كل الاحتمالات (غالبا ) طريقة التفكير والخوارزمية المستعملة وطريقة التطبيق سوف تجعل الجواب احلي :) 0 شارك هذا الرد رابط المشاركة شارك الرد من خلال المواقع ادناه
0 قام بالرد منذ 22 Sep 2013 #include <stdio.h> #include <stdlib.h> #define ull unsigned long long ull loz[40][40][40] = {{{0}}}; ull calc(int length, int ones, int zeroes) { ull n = 0; if(length == 1) return 1; if(ones > 0) { if(!loz[length - 1][ones - 1][zeroes]) loz[length - 1][ones - 1][zeroes] = calc(length - 1, ones - 1, zeroes); n += loz[length - 1][ones - 1][zeroes]; } if(zeroes > 0) { if(!loz[length - 1][ones][zeroes - 1]) loz[length - 1][ones][zeroes - 1] = calc(length - 1, ones, zeroes - 1); n += loz[length - 1][ones][zeroes - 1]; } return n; } void main() { printf("%llu\n", calc(40, 20, 20)); system("pause"); } 0 شارك هذا الرد رابط المشاركة شارك الرد من خلال المواقع ادناه
0 قام بالرد منذ 22 Sep 2013 جيد يا مصطفى....للأسف أنا لم أحاول حتى أن أفكر في حل رياضي, قد يؤلمني رأسي ان فعلت :wacko: ,,,لذلك دالة تراجعية بسيطة + تخزين النتائج لتفادي التكرار و الى الأمام :D 0 شارك هذا الرد رابط المشاركة شارك الرد من خلال المواقع ادناه
تم النشر منذ (معدل)
أعلن اليوم عن نتيجة السؤال الثاني وهي 137846528820
والفائزون هم
نرجو من المشاركين وضع مشاركاتهم لتتم الفائدة
تم تعديل بواسطه أحمد أبو عبد البرشارك هذا الرد
رابط المشاركة
شارك الرد من خلال المواقع ادناه