2013年11月4日 星期一

STEP5 0097 : 番外篇:ハト

[數學]
應該算是個純數學題@@不過因為原式有點醜,所以用遞迴的方式把他AC掉了

題目要求:





用這兩個性質:




#include<stdio.h>
#include<algorithm>
#include<math.h>
#define LL long long int
using namespace std;
LL f(LL N,LL q,LL p)
{
    //printf("call f(%d,%d,%d)\n",N,q,p);
    if((N*q/p)==0) return 0;
    if(q%p==0) return N*(N+1)/2*(q/p);
    if(q>p) return f(N,q%p,p) + N*(N+1)/2*(q/p);
    return N*((N*q)/p) - f(N*q/p,p,q)+N/p;
}
int main()
{
    LL n,a,b;
    while(scanf("%I64d %I64d %I64d",&n,&a,&b)!=EOF)
        printf("%I64d\n",f(n,a/__gcd(a,b),b/__gcd(a,b)));
    return 0;
}

沒有留言:

張貼留言