• الإعلانات

    • فيصل الحربي

      تسجيل عضوية جديدة في المنتدى   01/31/2016

      السلام عليكم ورحمة الله وبركاته  عزيزي العضو الجديد :  حاليا رسالة الإيميل لتأكيد صحة إيميلكم تذهب للبريد العشوائي ( جاري حل المشكلة )  فإذا لم تجد رسالة التحقق من إيميلكم في صندوق الوارد لديكم إتجه للبريد العشوائي ( JUNK)  وقم بتفعيل إشتراككم من هناك   

khatibe_30

اعضاء
  • عدد المشاركات

    139
  • تاريخ الانضمام

  • تاريخ اخر زياره

كل شيء نشر بواسطة khatibe_30

  1. //solution: 5513936,5825243 //Language: C #include <stdio.h> #include <stdlib.h> double nbrs[] = {845, 7415, 415, 15, 852, 85145}; double nbrs2[] = {412, 665, 4215, 412, 62, 9514}; char ops[6] = {0}; void calc(int level, double result, int * gotit) { double res = 0; if(level == 6){ if(result == 46375267) *gotit = 1; return; } ops[level] = '+'; res = result + nbrs[level]; calc(level +1, res, gotit); if(*gotit) return; ops[level] = '-'; res = result - nbrs[level]; calc(level +1, res, gotit); if(*gotit) return; ops[level] = '*'; res = result * nbrs[level]; calc(level +1, res, gotit); if(*gotit) return; ops[level] = '/'; res = result / nbrs[level]; calc(level +1, res, gotit); if(*gotit) return; } void main() { int gotit = 0; double result = 8541; calc(0, result, &gotit); result = 8961; for(gotit = 0; gotit < 6; gotit++){ switch(ops[gotit]){ case '+':result += nbrs2[gotit];break; case '-':result -= nbrs2[gotit];break; case '*':result *= nbrs2[gotit];break; case '/':result /= nbrs2[gotit];break; } } printf("%.7f\n", result); system("pause"); }
  2. //solution: 332640 //Language: C #include <stdio.h> #include <stdlib.h> #define ull unsigned long long ull dists[8] = {300000000, 600000000, 900000000, 1200000000, 1500000000, 1800000000, 2100000000, 2400000000}; ull path[8] = {0}; ull speeds[8] = {5000000/3, 10000000/4, 15000000/6, 20000000/7, 25000000/8, 10000000/3, 35000000/11, 40000000/12}; void main() { ull i, days = 1, isAligned = 0; double pcnt; while(!isAligned || days <= 2){ days++; for(i = 0; i < 8; i++) path += speeds; isAligned = 1; pcnt = ((double)(path[0] % dists[0]) / dists[0]) * 100; for(i = 1; i < 8; i++){ if((int)pcnt != (int)(((double)(path % dists) / dists) * 100)) { isAligned = 0; break; } } } printf("%llu\n", days); system("pause"); }
  3. #include <stdio.h> #include <stdlib.h> int gcd_sum(int numbers[400]) { int i, j, gcd, sum = 0; for(i = 0; i < 399; i += 2) { for(j = i + 2; j < 399; j += 2) { gcd = (numbers < numbers[j])? numbers : numbers[j]; while((numbers%gcd) || (numbers[j]%gcd)) gcd -= 2; sum += gcd; } } return sum; } void main() { int i, numbers[400]; for(i = 0; i<400; i++) numbers = i + 2; printf("%d\n", gcd_sum(numbers)); system("pause"); }
  4. جيد يا مصطفى.... للأسف أنا لم أحاول حتى أن أفكر في حل رياضي, قد يؤلمني رأسي ان فعلت  :wacko: ,,, لذلك دالة تراجعية بسيطة + تخزين النتائج لتفادي التكرار و الى الأمام  :D
  5. #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"); }
  6. نعم أخي مصطفى.. لكن ليس و كأنه يوجد مجال للنقاش أو الإقتراحات  -_- الفضول يقتلني حتى أرى محاولتك يا رجل,,سيكون الكود الخاص بك خارقا طبعا, كان علي أن لا اشارك  :D
  7. السلام عليكم اخي هل يمكنك وضع حل لمثال بسيط حتى يستطيع المشاركون التأكد من صحة حلولهم قبل ارسالها المهم, تم ارسال الحل و لكن حاليا لا أستطيع التأكد من صحته قد لا تمانع ان قلت انه حسب محاولتي: في سلسلة بطول 20 حرفا, و بتكرار الـ واحد 9 مرات و الـ صفر 11 مرة وجدت النتيجة = 167960 و في سلسلة بطول 8 أحرف, و بتكرار الـ واحد 4 مرات و الـ صفر 4 مرات وجدت النتيجة = 70 صحيح أم خطأ؟؟ تحياتي
  8. و عليكم السلام و رحمة الله و بركاته هذا شيء مهم جدا لكل مبرمج يريد ان يطور نفسه لكن انا راحت علي يا حبيبي.....انشغلت بالمشاغل و ابتعدت عن هالامور الى ان صرت حاسس ان دماغي صار ثقيل و يجيني صداع لما احاول احل اي مشكلة  :wacko:
  9. كود لرسم دوران الارض حول الشمس OpenGL

    #include <stdlib.h>#include <GL/glut.h>float time;int Xrotate=0,Yrotate=0,Zmove=0,Xmove=0,Ymove=0,Xprec=0,Yprec=0;static GLfloat sun_col[4]={1,.5,.2,1};static GLfloat moon_col[4]={1,1,1,1};static GLfloat p_col[4]={.2,.2,1,1};void init(void){ glEnable(GL_DEPTH_TEST); static GLfloat lightpos0[4]={0.0,3.0,3.0,0.0}; static GLfloat lightpos1[4]={0.0,-3.0,3.0,0.0}; static GLfloat lightamb1[4]={0.2,0.2,0.2,0.0}; static GLfloat lightdif1[4]={1.0,1.0,1.0,1.0}; static GLfloat lightape1[4]={1.0,1.0,1.0,1.0}; glLightfv(GL_LIGHT0,GL_POSITION,lightpos0); glLightfv(GL_LIGHT1,GL_POSITION,lightpos1); glLightfv(GL_LIGHT1,GL_AMBIENT,lightamb1); glLightfv(GL_LIGHT1,GL_DIFFUSE,lightdif1); glLightfv(GL_LIGHT1,GL_SPECULAR,lightape1); glEnable(GL_LIGHTING); glEnable(GL_LIGHT0);}GLdouble get_secs(){ return glutGet(GLUT_ELAPSED_TIME)/500.0;}void display(void){time=(GLfloat) get_secs();glClear (GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);glLoadIdentity(); /*camera position and rotating*/glTranslatef(Xmove,Ymove-1.0,Zmove-12.0);glRotatef(Yrotate+10,1,0,0);glRotatef(Xrotate+60,0,1,0); /* draw sun */glTranslatef (10.0, 0.0, 0.0);glMaterialfv(GL_FRONT,GL_AMBIENT_AND_DIFFUSE,sun_col);glutSolidSphere(1.2, 50, 50); GLfloat lightpos1[4]={10.0,0.0,0.0,0.0};glLightfv(GL_LIGHT1,GL_POSITION,lightpos1);glEnable(GL_LIGHT1); /* draw the planets and their moons */glPushMatrix();/* planet */glRotatef (time*9+100, 0.0, 1.0, 0.0); glTranslatef (5.0, 0.0, 0.0);glRotatef (time*500, 0.0, 1.0, 0.0);glMaterialfv(GL_FRONT,GL_AMBIENT_AND_DIFFUSE,p_col);glutSolidSphere(0.35, 50, 50);glRotatef (time*250, 0.0, 1.0, 0.0);/*moon*/glTranslatef (0.45, 0.0, 0.0);glRotatef (time*200, 1.0, 1.0, 0.0);glMaterialfv(GL_FRONT,GL_AMBIENT_AND_DIFFUSE,moon_col);glutSolidSphere(0.05,50, 50); glPopMatrix();glutSwapBuffers();}void keyboard (unsigned char key, int x, int y){switch (key) { case 27:exit(1);break;}}void reshape (int w, int h){glViewport (0, 0, (GLsizei) w, (GLsizei) h);glMatrixMode (GL_PROJECTION);glLoadIdentity();gluPerspective(60.0, (GLfloat) w/(GLfloat) h, 1.0, 100.0);gluLookAt(0,0,4,0,0,0,0,1,0);glMatrixMode(GL_MODELVIEW);glLoadIdentity();}void motion(int x,int y){ Xrotate-=(x-Xprec)/2;Yrotate-=(y-Yprec)/2; Xprec=x;Yprec=y;}int main(int argc, char** argv){glutInit(&argc, argv);glutInitDisplayMode (GLUT_DOUBLE | GLUT_RGB);glutInitWindowSize (500, 500);glutInitWindowPosition (100, 50);glutCreateWindow (argv[0]);init ();glutDisplayFunc(display);glutIdleFunc(display);glutReshapeFunc(reshape);glutMotionFunc(motion);glutKeyboardFunc(keyboard);//glutFullScreen();glutMainLoop();return 0;} 
  10. السلام عليكم جرب هذا الكود:     #include <stdlib.h>#include <GL/glut.h>float time;int Xrotate=0,Yrotate=0,Zmove=0,Xmove=0,Ymove=0,Xprec=0,Yprec=0;static GLfloat sun_col[4]={1,.5,.2,1};static GLfloat moon_col[4]={1,1,1,1};static GLfloat p_col[4]={.2,.2,1,1};void init(void){ glEnable(GL_DEPTH_TEST); static GLfloat lightpos0[4]={0.0,3.0,3.0,0.0}; static GLfloat lightpos1[4]={0.0,-3.0,3.0,0.0}; static GLfloat lightamb1[4]={0.2,0.2,0.2,0.0}; static GLfloat lightdif1[4]={1.0,1.0,1.0,1.0}; static GLfloat lightape1[4]={1.0,1.0,1.0,1.0}; glLightfv(GL_LIGHT0,GL_POSITION,lightpos0); glLightfv(GL_LIGHT1,GL_POSITION,lightpos1); glLightfv(GL_LIGHT1,GL_AMBIENT,lightamb1); glLightfv(GL_LIGHT1,GL_DIFFUSE,lightdif1); glLightfv(GL_LIGHT1,GL_SPECULAR,lightape1); glEnable(GL_LIGHTING); glEnable(GL_LIGHT0);}GLdouble get_secs(){ return glutGet(GLUT_ELAPSED_TIME)/500.0;}void display(void){time=(GLfloat) get_secs();glClear (GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);glLoadIdentity();                    /*camera position and rotating*/glTranslatef(Xmove,Ymove-1.0,Zmove-12.0);glRotatef(Yrotate+10,1,0,0);glRotatef(Xrotate+60,0,1,0);                    /* draw sun */glTranslatef (10.0, 0.0, 0.0);glMaterialfv(GL_FRONT,GL_AMBIENT_AND_DIFFUSE,sun_col);glutSolidSphere(1.2, 50, 50); GLfloat lightpos1[4]={10.0,0.0,0.0,0.0};glLightfv(GL_LIGHT1,GL_POSITION,lightpos1);glEnable(GL_LIGHT1);                    /* draw the planets and their moons */glPushMatrix();/* planet */glRotatef (time*9+100, 0.0, 1.0, 0.0); glTranslatef (5.0, 0.0, 0.0);glRotatef (time*500, 0.0, 1.0, 0.0);glMaterialfv(GL_FRONT,GL_AMBIENT_AND_DIFFUSE,p_col);glutSolidSphere(0.35, 50, 50);glRotatef (time*250, 0.0, 1.0, 0.0);/*moon*/glTranslatef (0.45, 0.0, 0.0);glRotatef (time*200, 1.0, 1.0, 0.0);glMaterialfv(GL_FRONT,GL_AMBIENT_AND_DIFFUSE,moon_col);glutSolidSphere(0.05,50, 50); glPopMatrix();glutSwapBuffers();}void keyboard (unsigned char key, int x, int y){switch (key) { case 27:exit(1);break;}}void reshape (int w, int h){glViewport (0, 0, (GLsizei) w, (GLsizei) h);glMatrixMode (GL_PROJECTION);glLoadIdentity();gluPerspective(60.0, (GLfloat) w/(GLfloat) h, 1.0, 100.0);gluLookAt(0,0,4,0,0,0,0,1,0);glMatrixMode(GL_MODELVIEW);glLoadIdentity();}void motion(int x,int y){  Xrotate-=(x-Xprec)/2;Yrotate-=(y-Yprec)/2;  Xprec=x;Yprec=y;}int main(int argc, char** argv){glutInit(&argc, argv);glutInitDisplayMode (GLUT_DOUBLE | GLUT_RGB);glutInitWindowSize (500, 500);glutInitWindowPosition (100, 50);glutCreateWindow (argv[0]);init ();glutDisplayFunc(display);glutIdleFunc(display);glutReshapeFunc(reshape);glutMotionFunc(motion);glutKeyboardFunc(keyboard);glutFullScreen();glutMainLoop();return 0;} 
  11. السلام عليكم أعزائي, مرحبا بكم أقدم لكم مسألة حسابية (مشكلة) و المطلوب إيجاد الحل البرمجي لها. المعطيات: نفترض أنه لدينا 3 أنابيب بسعة متساوية, سعة كل أنبوب 6 لتر, و وعاءين (2 وعاء) نستخدمهما لنملأ الأنابيب بالماء, في كل مرة نسكب الماء في أنبوب ما من الأنابيب (الترتيب غير مهم) باستخدام أحد الأوعية إلى أن نملأ كل الأنابيب. الوعاء الأول سعته 3 لترات, و الوعاء الثاني سعته 2 لترات. الشرط الوحيد الذي يجب أن نتقيد به هو أن لا نجد مستوى الماء متساوي في أنبوبين متجاورين أثناء أي مرحلة من العملية, مثلا أنظر إلى الصورة: العملية على اليسار صحيحة, لأنه لا يوجد أنبوبين متجاورين لهما نفس المستوى من الماء العملية على اليمين, غير مسموح القيام بها, الأنبوب الثاني و الثالث لهما نفس المستوى, لذلك يجب أن نتوقف. إذن, يجب أن نملأ الأنابيب, نسكب كمية من الماء باستعمال أحد الأوعية في كل أنبوب إلى أن نملأه باستخدام مجموعة من الأوعية, على شرط عدم وصول الماء لنفس المستوى في أنبوبين متجاورين, في المثال السابق, من أجل 3 أنابيب, سعة كل أنبوب 6 لترات, يوجد طريقتين لملأ الأنابيب كما في الصورة: الطريقة الأولى, على اليسار: الأنبوب الأول 3-3, الأنبوب الثاني 2-2-2, الأنبوب الثالث 3-3 الطريقة الثانية, على اليمين: الأنبوب الأول 2-2-2, الأنبوب الثاني 3-3, الأنبوب الثالث 2-2-2 و من أجل 3 أنابيب, سعة كل أنبوب 8 لترات, يوجد 4 طرق, و هذه إحدى الطرق في الصورة: 2-3-3, 3-3-2, 2-3-3 في حين أن العملية التالية خاطئة: 3-3-2, 2-2-2-2, 3-2-3 خلال العملية, نلاحظ أن الأنبوب الثاني و الثالث يمكن أن يكون الماء فيهما في نفس المستوى باستعمال سلسلة الأوعية المعطاة لكل أنبوب. المطلوب: أوجد عدد الطرق التي يمكن أن نملأ بها 10 أنابيب, سعة كل أنبوب 32 لتر, يمكنك أن تستعمل أي لغة برمجة تريد في كتابة الكود الذي سيقوم بالحساب. أي, من أجل N = 10 و L = 32 كم يوجد من عدد الطرق ملأ الأنابيب؟ الأفضل أن تكتب الكود الذي سيعمل في الحالة العامة, من أجل عدد أنابيب N, كل أنبوب بسعة L لترات, أوجد عدد الطرق التي يمكن أن نملأ بها الأنابيب. معطيات مساعدة: إليك هذه النتائج المحسوبة مسبقا: من أجل N = 3 و L = 8 هناك 4 طرق من أجل N = 3 و L = 9 هناك 8 طرق من أجل N = 5 و L = 10 هناك 28 طريقة من أجل N = 6 و L = 13 هناك 452 طريقة من أجل N = 5 و L = 16 هناك 1796 طريقة ملاحظة: قبل أن أكتب الموضوع أجريت بحثا في المنتدى حتى أتجنب التكرارا و لم أجد موضوعا مشابه, لذلك, إذا كان الموضوع مكررا فأرجو حذفه و إبلاغي.
  12. linuxman الكود الذي كتبته أنت ينقصه شيء واحد حتى يتم تنفيذه في وقت معقول, و هو تخزين النتائج تلاحظ أنه يوجد الكثير الكثير من الحسابات التي تتكرر مثلا إذا وصلت ألى الأنبوب رقم 2, و كانت الطريقة الحالية لملء الأنبوب هي رقم r من الطرق 3329, طبعا ستحسب الطرق التي توافقها في الأنبوب 3 و الطرق التي توافق الطرق التي توافقها في الانبوب 4...الخ الى ان تصل الى الانبوب 10 لذلك, يجب أن تقوم بتخزين هذه النتائج في مصفوفة مثلا m(2, r) = result; و عندما تعود إلى الحلقة الأولى و تبدأ عملية التحقق من الأنبوب الثاني, فإنك قبل أن تدخل في حلقة أخرى, ستتحقق هل تم حساب هذه النتيجة التي ستقوم بحسابها مسبقا او لا اذا سبق و حسبتها, استعمل النتيجة المخزنة و اخرج من الحلقة و انتقل الى الحالة الموالية و هكذا
  13. أظن أن الأخ مصطفى غائب, هذا حل مصطفى: #include<cstdio> int num(int a) { if(a==1) return 0; else if(a==2) return 1; else if(a==3) return 1; else return num(a-2)+num(a-3); } int number=0; class tree { private: int value; int ID; tree*prev; tree*next1; tree*next2; public: tree(int); tree(int,tree*); int treesize(int); int getleaf(int,int); }; tree **b; tree:: tree(int a) { value=a; next1=new tree(value-2,this); next2=new tree(value-3,this); } tree:: tree(int a,tree*b) { value=a;prev=b; if(a==1) value=0; else if(a!=2&&a!=3) { next1=new tree(value-2,this); next2=new tree(value-3,this); } else if(a==2||a==3) { ID=number++; ::b[ID]=this; } } int tree::treesize(int end) { tree *buffer=this; int i; for(i=0;buffer->value!=end;i++) buffer=buffer->prev; return i; } int tree::getleaf(int end,int j) { tree *buffer=this; int i; for(i=0;buffer->value!=end;i++) { if(i==j)return buffer->value; buffer=buffer->prev; } return 0; } typedef char Byte; bool linearsearch(int *a,int size,int target) { for(int i=0;i<size;i++) if(a[i]==target)return 1; return 0; } int **series; int *counterSeries; void initseries(int L) { series=new int*[num(L)]; counterSeries=new int[num(L)]; } void wich_next(int**c,int L) { initseries(L); int Size=num(L); int counter=Size,counter2=Size; int i,j,k; int indeX=0; for(i=0;i<num(L);i++) { series[i]=new int[Size]; counter=Size,counter2=Size; for(j=0;j<Size;j++)series[i][j]=j; for(j=0;j<b[i]->treesize(L);j++) { for(k=0;k<counter2;k++) { if( linearsearch (c[series[i][k]], b[series[i][k]]->treesize(L), c[i][j])) {series[i][k]=-1;counter--;} } int *buffer=new int[counter]; int index=0; for(k=0;k<counter2;k++) if(series[i][k]!=-1) buffer[index++]=series[i][k]; series[i]=buffer; counter2=counter; }counterSeries[indeX++]=counter; } } main() { unsigned int L; unsigned int N; printf("Enter L :");scanf("%u",&L); printf("Enter N :");scanf("%u",&N); b=new tree*[num(L)]; tree a(L); int i,j,k; int**c=new int*[num(L)]; for(i=0;i<num(L);i++) { int X=b[i]->treesize(L); c[i]=new int[X]; for(int j=0;j<X;j++) c[i][j]=b[i]->getleaf(L,j); } wich_next(c,L); long long **array; array=new long long*[N]; array[0]=new long long[num(L)]; for(j=0;j<num(L);j++)array[0][j]=1; for(i=1;i<N;i++) { array[i]=new long long[num(L)]; for(k=0;k<num(L);k++)array[i][k]=0; for(j=0;j<num(L);j++) { for(k=0;k<counterSeries[j];k++) array[i][series[j][k]]+=array[i-1][j]; } } long long int SUPERSUM=0; SUPERSUM=0; for(i=0;i<num(L);i++)SUPERSUM+=array[N-1][i]; printf("%llu\n",SUPERSUM); return 0; }
  14. أجل, تهانينا, الحل صحيح :happy: :happy: أعتقد أن حلك = حل linuxman + إضافة مميزة (و هي مفتاح اللغز)
  15. هذا الكود, نظريا صحيح و سيعطي نتيجة, و لكن عمليا, لا يمكن أن يعطيك نتيجة إذا كانت نتيجة أنبوبين و هي -حسب طريقتك- عبارة عن 33292عملية تحقق من توافق الأنابيب تأخذ معك 1 ثانية فقط و ليس 20 فإن التحقق من 10 أنابيب و الذي سيكون -حسب طريقتك- عبارة عن 332910عملية تحقق أي سيكون 33292 * 33298 عملية تحقق من توافق الانابيب و سيأخذ من الوقت 1*33298 ثانية و هذا أكثر من 478303715279 مليار سنة حسب حساباتي حتى باستعمال سوبر سوبر سوبر كومبيوتر فسيأخذ هذا الكود حتى يجد حلا عشرات أو مئات ملايين السنين و ربما أكثر بكثير
  16. مادامت البداية صحيحة فالباقي سيكون صحيح, و لكن وقت التنفيذ عامل مهم جدا, أكواد bruite force يمكن أن تأخذ عشرات السنين حتى تصل الى نتيجة في الحالات الكبيرة لذلك, اذا كانت طريقتك بعد تعميمها على 10 أنابيب على الأقل تجد النتيجة في أقل من ثانية فهي طريقة مقبولة.
  17. خذ وقتك و على راحتك يا مصطفى, على ما أذكر أنا فتحت هذه المسألة عندما وجدتها باستخدام bruit force و بمسح كل الاحتمالات و النتيجة في جزء من الثانية, ربما تستطيع أن تجد لنا صيغة رياضية أفضل.
  18. هذه الصيغة التي وصلت اليها: #include<stdio.h> #include<stdlib.h> int main(){ unsigned long long n; printf("n = "); scanf("%llu", &n); if(n%2) printf("0\n"); else{ unsigned long long p, diff, bCells = 2*n*n+n-1; if(n==2) diff = 1; else diff = (n/2)*(n/2)-1; bCells -= diff; printf(" f(n) = "); printf("%llu\n", bCells*4+1); } system("pause"); return 0; } أقوم بحساب اجمالي عدد الخانات السوداء التي تقع ضمن المساحة التي يتجول عليها الحصان على ربع لوحة شطرنج, ثم انقص منه الخانات السوداء التي لا يستطيع الوصول اليها من تلك المجموعة و اطرح ايضا عدد الخانات لسوداء التي يصل اليها على الخط الأفقي أو العمودي, حتى أتحصل على ربع عدد خانات كل لوح الشطرنج بالضبط, اضاعف 4 مرات و اضيف واحد. ليست صيغة مثالية و لكنها تفي بالغرض ^_^
  19. هذه أفضل من الطريقة التي استخدمتها أنا هلا تكرمت و شرحت لي كيف وصلت اليها
  20. أجل حصلت على طريقة حسابية و تبين انها شغااالة :lol: :lol: :lol:
  21. مصطفى من ضمن ما أكره من الألغاز أكره الألغاز المتعلقة بلوحة الشطرنج خصوصا و ألغاز الصيغ الرياضية عموما لست جيدا في مشاكل الـ combinations و n-chooses-k ما شابه و أستعمل bruit force دائما في حل هذه المشاكل المهم, قمت بحساب النتيجة في ربع لوحة شطرنج ثم أضاعفها 4 مرات و اضيف 1 الخاص بنقطة البداية تحقق لي من هذه النتائج, أتحصل عليها في جزء من الثانية و لست متأكد من صحتها n(100) = 70401 n(2000) = 28008001 n(216) = 30065033217 n(224) = 1970324904083457
  22. سؤال/ بالنسبة لطريقتك, هل تعتمد على صيغة رياضية محددة أم أنك تلعب كل الاحتمالات و تحسب؟
  23. أنا لم أعتمد على اي صيغة رياضية, فقط لعب كل الاحتمالات و استخدام البرمجة الديناميكة في اللعب حسنته قليلا و أعطاني النتيجة n(30) = 6421 سأحاول أن أجد كود أفضل من هذا لاحقا...سلام مؤقت
  24. اذا, الكود الذي كتبته مبدئيا صحيح, n(8) = 481 و لكنه بطيء و لم يستطع ايجاد n(16) :lol: :lol: على العموم سأحاول تحسينه
  25. n=15 النتيجة 0 هل من أجل n=6 النتيجة 277 ؟؟؟