2011-12-06 40 views
5

Từ Dự án Euler, problem 45:Dự án Euler số 45

Tam giác, ngũ giác, và hình lục giác con số này được tạo ra bởi các công thức sau đây:

Triangle T_ (n) = n (n + 1)/2 1, 3, 6, 10, 15, ...

ngũ giác p_ (n) = n (3n-1)/2 1, 5, 12, 22, 35, ...

sáu phương H_ (n) = n (2n − 1) 1, 6, 15, 28, 45, ...

Có thể xác minh rằng T_ (285) = P_ (165) = H_ (143) = 40755.

Tìm số tam giác tiếp theo cũng là hình ngũ giác và lục giác.

Đây là câu hỏi. Nó khá đơn giản và dễ hiểu, nhưng vấn đề là, chương trình của tôi chạy vào một trục trặc, thời điểm giá trị của số tam giác vượt quá giá trị tối đa mà bạn có thể có trong kiểu dữ liệu int. Tôi đã thử tìm kiếm mạng cho các loại dữ liệu khác nhưng không thành công.

 #include<stdio.h> 
    int main(void) 
    { 
     int i,j,t,h,p,k; 
     int n=10000; 
     for(i=0;i<n;i++) 
     { 
      t=(i*(i+1))/2; 
      for(j=0;j<n;j++) 
      { 
       h=j*(2*j-1); 
       if(h>t) 
       break; 
       if(h==t) 
       { 
        //printf("%d %d\n",h,t); 
        for(k=0;k<n;k++) 
        { 
         p=(k*(3*k-1))/2; 
         if(p>h) 
         break; 
         if(p==h) 
         { 
          printf("%d %d\n",p,i); 
          break; 
         } 
        } 
       } 

      } 
     }  
     printf("done\n"); 
     return(0); 
    } 

Trả lời

5

Hãy thử unsigned dài. Nó sẽ hoạt động.

+1

Bạn có thể cho tôi biết trình giữ chỗ cho nó không? –

+1

variablename dài chưa được ký; – johnathon

+1

Chỉ thay thế mọi 'int' trong chương trình của chúng ta bằng' unsigned long long' và thay đổi các định dạng từ '% d' thành'% llu'. –

Các vấn đề liên quan