[破碎的状态] [-52] Hdu 5478 Can you find it
感谢@似水流年 的翻译~
这一题题意:
求对于任何整数n满足:
[tex]a^{k1 \cdot n + b1} + b^{k2 \cdot n - k2 + 1} = 0 (mod C)[/tex]
为了满足这一个需求
我们可以这么做:
观察n=1的情况
[tex]a^{k1 + b1} + b = 0 (mod C)[/tex]
也就是说,我们枚举a,然后就有一个b
然后我们对这个b进行判定
如果[tex]a^k1 = b^k2[/tex]就满足条件,输出
AC..没有输出-1给WA了一次,还PE了一次不开心..
#include<set> #include<map> #include<list> #include<queue> #include<stack> #include<math.h> #include<string> #include<time.h> #include<bitset> #include<vector> #include<memory> #include<utility> #include<stdio.h> #include<sstream> #include<fstream> #include<iostream> #include<stdlib.h> #include<string.h> #include<algorithm> using namespace std; int modo; int power(int x,int y) { if (y==0) return 1; int t=power(x,y/2); t=(long long)t*t%modo; if (y%2==1) t=(long long)t*x%modo; return t; } int main() { #ifdef absi2011 freopen("input.txt","r",stdin); freopen("output.txt","w",stdout); #endif int k1,b1,k2; int zu=0; for (;scanf("%d%d%d%d",&modo,&k1,&b1,&k2)!=-1;) { zu++; printf("Case #%d:\n",zu); int i; int sum=0; for (i=1;i<modo;i++) { int t=modo-power(i,k1+b1); if (power(t,k2)==power(i,k1)) { printf("%d %d\n",i,t); sum++; } } if (sum==0) printf("-1\n"); } return 0; }