24h購物| | PChome| 登入
2009-05-13 19:14:12| 人氣1,183| 回應0 | 上一篇 | 下一篇

ACM 106 Fermat vs. Pythagoras

推薦 0 收藏 0 轉貼0 訂閱站台

作法:數學解.
畢達哥拉斯跟費瑪...建表唄
勾股數的條件

/* abc為三邊  m > n 、 m 和 n 均是正整*/ 
/*a = m^2 -n^2, */ 
/*b = 2mn, */ 
/*c = m^2+n^2*/

之後再建表搜尋費瑪的...

/*********************************************************/

#include<stdio.h>     
#include<stdlib.h>  
int gcd(int a,int b)  
 {  
  int temp;  
  while(a%b)        
   {        
    temp=a;        
    a=b;        
    b=temp%b;                   
   }  
   return b;  
 }  
char flag[10000001]={0};
main()                          
{  
  int nn;
  while (scanf("%d",&nn)==1&&nn!=0)  
  {  
    int ans=0,ans2=0;
    int n,m,a,b,c; 
    for(n=1;n<1000;n++)           
     {
        for(m=n+1;m<1000;m=m+2)           
        {
         if (gcd(m,n)>1) continue; 
          c=m*m+n*n;
         if(c>nn) break;  
          ans++;
          for(a=0;a<nn;a++)
           {
             if(c*a>nn) break;
             flag[a*(m*m+n*n)]=1;
             flag[a*(2*m*n)]=1;
             flag[a*(m*m-n*n)]=1;
           }
        }
     }  
    for(a=1;a<=nn;a++)
     {
      if(flag[a]==1) ans2++;
      flag[a]=0;
     }
     printf("%d %d\n",ans,nn-ans2);
   
  }  
   return 0;  
}    
/* abc為三邊  m > n 、 m 和 n 均是正整*/ 
/*a = m^2 -n^2, */ 
/*b = 2mn, */ 
/*c = m^2+n^2*/

台長: 來源不明
人氣(1,183) | 回應(0)| 推薦 (0)| 收藏 (0)| 轉寄
全站分類: 數位資訊(科技、網路、通訊、家電) | 個人分類: ACM |
此分類下一篇:ACM 10783 10783 - Odd Sum
此分類上一篇:ACM 11388 11388 - GCD LCM

是 (若未登入"個人新聞台帳號"則看不到回覆唷!)
* 請輸入識別碼:
請輸入圖片中算式的結果(可能為0) 
(有*為必填)
TOP
詳全文