2009-05-09 20:13:57來源不明

ACM 11417 11417 - GCD

作法:建表
加速:DP(紀錄關係!! 自己畫表就可以了解了)

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

#include<stdio.h>
#include<stdlib.h>
#define N 500
int gcd(int a,int b)        
 {        
  int temp;        
  while(a%b)              
   {              
    temp=a;              
    a=b;              
    b=temp%b;                         
   }        
   return b;        
 } 
main()
{
 short int map[501][501]={0};
 int ans[501]={0};
 int a,b,n;
 for(a=1;a<=N;a++)
  for(b=a+1;b<=N;b++)
   {
    map[a][b]=map[a][b-1]+gcd(a,b);
    ans[b]+=map[a][b];
   }
 while(scanf("%d",&n)==1&&n!=0)
    printf("%d\n",ans[n]);
 return 0;
}