题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5478
#include<cstdio>
#include<cstring>
using namespace std;
typedef long long ll;
ll C;
ll quickpow(ll a,ll b)
{
ll r=1,c=a;
while(b)
{
if(b%2)
r*=c;
r%=C;
c*=c;
c%=C;
b/=2;
}
return r;
}
int main()
{
ll k1,b1,k2,a,b;
int cas=1;
int flag;
while(~scanf("%lld%lld%lld%lld",&C,&k1,&b1,&k2))
{
flag=0;
printf("Case #%d:\n",cas++);
for(a=1;a<C;a++)
{
b=C-quickpow(a,k1+b1);
if(quickpow(a,k1)==quickpow(b,k2))
{
printf("%lld %lld\n",a,b);
flag=1;
}
}
if(!flag)
printf("-1\n");
}
return 0;
}