HDU 5478 公式變換

2021-09-09 06:28:00 字數 1695 閱讀 2579

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個城...