Главная страница


ru.algorithms

 
 - RU.ALGORITHMS ----------------------------------------------------------------
 From : Sergiy Kanilo                        2:5020/400     07 Mar 2003  21:43:32
 To : Vjacheslav Maslov
 Subject : Re: задачка: A^3+B^3+C^3=D^3
 -------------------------------------------------------------------------------- 
 
 "Vjacheslav Maslov" <Vjacheslav.Maslov@p60.f231.n5000.z2.fidonet.org> wrote
 in message news:1046888490@p60.f231.n5000.z2.ftn...
 
 >    /*Доброго времени суток*/, All !
 >
 > Хочу предложить такую задачку: найти все натуральные числа меньшие 1000,
 > которые удовлетворяют уравнению:
 >
 > A^3+B^3+C^3=D^3.
 
 [skip]
 
 > Работает, но медленно где-то 5-7 минут. Один мой знакомый утверждает, что
 > придумал алгоритм решения этой задачи, который отрабатывает за 2 сек на
 
 машине
 
 > класса P III.
 
 #include <math.h>
 #include <stdio.h>
 
 int main(){
 
   int const N =1000;
   int i3[N+1];
   for(int i=1; i<=N; ++i) i3[i] =i*i*i;
 
   int const M =N/pow(3.0,1.0/3.0);
   int const L =N/pow(2.0,1.0/3.0);
 
   for(int a =1; a<M; ++a){
     int a3 =i3[a];
 
     for(int b=a; b<=L; ++b){
       int b3 =i3[b];
 
       int a3_b3 =a3+b3;
       int a3_b3_b3 =a3_b3+b3;
 
       int d =b+1; // or d =b*pow(2.0,1.0/3.0)
       int d3 =i3[d];
 
       while(d3<a3_b3_b3) d3 =i3[++d];  // or bsearch in i3[b+1:2*b]
       if(d>N) break;
       if(d3==a3_b3_b3) printf("%i^3 + %i^3 + %i^3 = %i^3\n",a,b,b,d);
 
       for(int c=b+1; c<N; ++c){
         int a3_b3_c3 =a3_b3+i3[c];
 
         while(d <=N && d3 < a3_b3_c3) d3 =i3[++d];
         if(d>N) break;
         if(d3==a3_b3_c3) printf("%i^3 + %i^3 + %i^3 = %i^3\n",a,b,c,d);
         }
 
       }
 
     }
 
   }
 
 работает около 1 сек (правда на P4 1.8 :)
 комментарии показывают места,
 где можно еще чуть ускорить (на 10-20%)
 
 Cheers,
 Serge
 --- ifmail v.2.15dev5
  * Origin: Demos online service (2:5020/400)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 задачка: A^3+B^3+C^3=D^3   Vjacheslav Maslov   06 Mar 2003 01:15:54 
 Re: задачка: A^3+B^3+C^3=D^3   Vadim Miller   06 Mar 2003 00:59:13 
 Re: задачка: A^3+B^3+C^3=D^3   Igor Krassikov   06 Mar 2003 11:41:00 
 задачка: A^3+B^3+C^3=D^3   Kluchnikov Eugene   06 Mar 2003 13:52:14 
 Re: задачка: A^3+B^3+C^3=D^3   Soldatenkov Mitea   07 Mar 2003 03:08:44 
 Re: задачка: A^3+B^3+C^3=D^3   Oleg I. Khovayko   07 Mar 2003 21:29:53 
 Re: задачка: A^3+B^3+C^3=D^3   Igor Krassikov   07 Mar 2003 21:36:00 
 Re: задачка: A^3+B^3+C^3=D^3   Sergiy Kanilo   07 Mar 2003 21:43:32 
 Re: задачка: A^3+B^3+C^3=D^3   Dmitry Lipovoi   09 Mar 2003 10:57:46 
 Re: задачка: A^3+B^3+C^3=D^3   Sergiy Kanilo   11 Mar 2003 07:48:21 
 задачка: A^3+B^3+C^3=D^3   Sasha Pelepeichenko   07 Mar 2003 15:09:46 
 задачка: A^3+B^3+C^3=D^3   Vjacheslav Maslov   09 Mar 2003 01:05:22 
 задачка: A^3+B^3+C^3=D^3   Sasha Pelepeichenko   11 Mar 2003 01:14:26 
 задачка: A^3+B^3+C^3=D^3   Dima Danilov   11 Mar 2003 22:29:06 
 Re: задачка: A^3+B^3+C^3=D^3   Sergey Andrianov   07 Mar 2003 23:54:52 
Архивное /ru.algorithms/65778939c45b.html, оценка 2 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional