• الإعلانات

    • فيصل الحربي

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

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

khatibe_30

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

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

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

السمعه بالموقع

64 جيد

عن khatibe_30

  • الرتبة
    عضو
  • تاريخ الميلاد 08/30/1985

طرق الإتصال

معلومات الملف الشخصي

  • الجنس ذكر
  • الدولة : الجزائر
  • اهتمامات البرمجة و الشبكات

أحدث الزائرين لملفلك الشخصي

9,892 زياره للملف الشخصي
  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. linuxman الكود الذي كتبته أنت ينقصه شيء واحد حتى يتم تنفيذه في وقت معقول, و هو تخزين النتائج تلاحظ أنه يوجد الكثير الكثير من الحسابات التي تتكرر مثلا إذا وصلت ألى الأنبوب رقم 2, و كانت الطريقة الحالية لملء الأنبوب هي رقم r من الطرق 3329, طبعا ستحسب الطرق التي توافقها في الأنبوب 3 و الطرق التي توافق الطرق التي توافقها في الانبوب 4...الخ الى ان تصل الى الانبوب 10 لذلك, يجب أن تقوم بتخزين هذه النتائج في مصفوفة مثلا m(2, r) = result; و عندما تعود إلى الحلقة الأولى و تبدأ عملية التحقق من الأنبوب الثاني, فإنك قبل أن تدخل في حلقة أخرى, ستتحقق هل تم حساب هذه النتيجة التي ستقوم بحسابها مسبقا او لا اذا سبق و حسبتها, استعمل النتيجة المخزنة و اخرج من الحلقة و انتقل الى الحالة الموالية و هكذا
  12. أظن أن الأخ مصطفى غائب, هذا حل مصطفى: #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; }
  13. أجل, تهانينا, الحل صحيح :happy: :happy: أعتقد أن حلك = حل linuxman + إضافة مميزة (و هي مفتاح اللغز)
  14. هذا الكود, نظريا صحيح و سيعطي نتيجة, و لكن عمليا, لا يمكن أن يعطيك نتيجة إذا كانت نتيجة أنبوبين و هي -حسب طريقتك- عبارة عن 33292عملية تحقق من توافق الأنابيب تأخذ معك 1 ثانية فقط و ليس 20 فإن التحقق من 10 أنابيب و الذي سيكون -حسب طريقتك- عبارة عن 332910عملية تحقق أي سيكون 33292 * 33298 عملية تحقق من توافق الانابيب و سيأخذ من الوقت 1*33298 ثانية و هذا أكثر من 478303715279 مليار سنة حسب حساباتي حتى باستعمال سوبر سوبر سوبر كومبيوتر فسيأخذ هذا الكود حتى يجد حلا عشرات أو مئات ملايين السنين و ربما أكثر بكثير
  15. مادامت البداية صحيحة فالباقي سيكون صحيح, و لكن وقت التنفيذ عامل مهم جدا, أكواد bruite force يمكن أن تأخذ عشرات السنين حتى تصل الى نتيجة في الحالات الكبيرة لذلك, اذا كانت طريقتك بعد تعميمها على 10 أنابيب على الأقل تجد النتيجة في أقل من ثانية فهي طريقة مقبولة.