ああ...
トピックリンクします。http://poj.org/problem ID = 2115?
(A + S * C)%2 ^ K = B
(A + S * C)≡B(MOD 2 ^ k)と
S *のCm * 2 ^ k = BA
斧+ = Cによって、
問題は、正と負の線形結合の集合、bは、bは負であることは、とにかく、必要ではないが、ある同じであり、この問題はさらにYを必要としません
ACコード:
1の#include <cstdioを> 2の#include <iostreamの> 3 4 使用して 名前空間STDを、 5 6インラインボイド exgcd(長い 長い、長い 長い B、長い 長い&G、長い ロング・X、長い 長い&Y){ 7 であれば {G =(B!)。X = 1。Y = 0 ;} 8 そう {exgcd(B、%のB、G、Y、X)。Y - = X *(A / B);} 9 } 10 11 INTメイン(){ 12 長い 長い、B、C、A、B、C、K、G、X、Y。 13 一方(〜のscanf(" %LLD%LLD%LLD%LLD "、&A、&B、&C&K)){ 14 であれば(A && B && C && K!!)ブレーク。 15 A = C。B = 1LL << K。C = B - A。 16 exgcd(A、B、G、X、Y)。 17 もし(C%でのG)のprintf(" FOREVER \ n " ); 18 他{ 19 C / A = G。B / A = G。 20 のprintf("、(X%のb *表Cの%B + B)%のB)。 21 } 22 } 23 リターン 0 。 24 }