Lang:G++
Edit1234567891011121314151617181920212223242526272829#include<iostream>#include<cstdio>#include<cmath>#include<cstring>#include<algorithm>#include<map>#include<set>using namespace std;long long bb;long long mark=1,p;void check(long long a,long long b){if(b%a==a-1){mark=mark*(b/a+1)%p;return ;}mark=mark*(b/a+1)%p;check(a-b%a,b);return;}int main(){long long a;scanf("%lld%lld%lld",&a,&bb,&p);check(bb,p);printf("%lld\n",(long long)(mark%p*a)%p);return 0;}