fork download
  1. #include<bits/stdc++.h>
  2. #define llu unsigned long long
  3. using namespace std;
  4. llu modexp(llu a, llu b,llu m)
  5. {
  6. if(b==0) return 1;
  7. llu temp=modexp(a,b/2,m);
  8. if(b%2==1) return (((temp%m)*(temp%m))%m*(a%m))%m;
  9. return ((temp%m)*(temp%m))%m;
  10. }
  11. int main()
  12. {
  13. llu n,m,k,ans,t;
  14. const llu mod=1000000007;
  15. scanf("%lld\n",&t);
  16. while(t--)
  17. {
  18. scanf("%lld %lld %lld\n",&n,&k,&m);
  19. ans=1;
  20. if(m>n) printf("Sweg\n");
  21. else
  22. {
  23. if(m==1) ans=modexp(k,n,mod);
  24. else
  25. {
  26. if(m==n)
  27. {
  28. ans=modexp(k,(n+1)/2,mod);
  29. }
  30. else
  31. {
  32. if(m%2==1) ans=(k%mod*k%mod)%mod;
  33. else ans=k%mod;
  34. }
  35. }
  36. printf("%lld\n",ans);
  37. }
  38. }
  39. return 0;
  40. }
Success #stdin #stdout 0s 3460KB
stdin
2
1 1 1
5 2 4
stdout
1
2