problem description
given a prime number c(1≤c≤2×105), and three integers k1, b1, k2 (1≤k1,k2,b1≤109). please find all pairs (a, b) which satisfied the equation ak1⋅n+b1 + bk2⋅n−k2+1 = 0 (mod c)(n = 1, 2, 3, ...).
input
there are multiple test cases (no more than 30). for each test, a single line contains four integers c, k1, b1, k2.
output
first, please output "case #k: ", k is the number of test case. see sample output for more detail.
please output all pairs (a, b) in lexicographical order. (1≤a,b思路:
由於(ak1*n+b1+bk2(n-1)+1)(modc)=0對於任意n為正整數恆成立,那麼對於n=1成立可得(ak1+b1+b)(modc)=0;n =2時可得(a2*k1+b1+bk2+1)(modc)=0;
那麼將n=1時所得的等式*ak1(modc)得(a2*k1+b1+b*ak1)(modc)=0;
那麼和n=2時所得的式子比較可得(ak1)(modc)=(bk2)(modc);
那麼由於1<=a,b那麼從1迴圈到c列舉a,用快速冪求ak1,ak1+b1,用n=1時的等式求b,快速冪求bk2 ,判斷是否(ak1)(modc)=(bk2)(modc);
下面證明;當a,b符合1,2式時,就(ak1*n+b1+bk2(n-1)+1)(modc)對於任意n為正整數恆成立。
1式可解得b=(c-(ak1+b1)modc);由1,2式得(ak1)(modc)=(bk2)(modc);
那麼原式可改寫為:(ak1*n+b1+ak1(n-1)*(c-(ak1+b1)modc))(modc)=0;
==(ak1*n+b1+ak1(n-1)*(c-(ak1+b1))(modc)=0
==(c*ak1(n-1))(modc)=0;
#include#include#include#include#include#include#include#include#include#include#include#include#include#include#define pi acos(-1.0)
#define e 1e-6
const long long int mod=1e6+3;
#define inf 0x3f3f3f3f
#define maxn 1010
using namespace std;
#define ll long long int
ll quick(ll x,ll y);
ll c;
using namespace std;
ll quick(ll x,ll y)//快速冪
k=(k*k)%c;
y/=2;
}return i;
}int main()
}if(flag==0)
}return 0;
}
547 省份數量
有 n 個城市,其中一些彼此相連,另一些沒有相連。如果城市 a 與城市 b 直接相連,且城市 b 與城市 c 直接相連,那麼城市 a 與城市 c 間接相連。省份 是一組直接或間接相連的城市,組內不含其他沒有相連的城市。給你乙個 n x n 的矩陣 isconnected 其中 isconnected...
547 省份數量
有 n 個城市,其中一些彼此相連,另一些沒有相連。如果城市 a 與城市 b 直接相連,且城市 b 與城市 c 直接相連,那麼城市 a 與城市 c 間接相連。省份 是一組直接或間接相連的城市,組內不含其他沒有相連的城市。給你乙個 n x n 的矩陣 isconnected 其中 isconnected...
547 省份數量
有n個城市,其中一些彼此相連,另一些沒有相連。如果城市a與城市b直接相連,且城市b與城市c直接相連,那麼城市a與城市c間接相連。省份 是一組直接或間接相連的城市,組內不含其他沒有相連的城市。給你乙個n x n的矩陣isconnected,其中isconnected i j 1表示第i個城市和第j個城...