این سوال از برنامه نویس می خواهد تا برنامه ای بنویسد که تعداد جواب های متمایز دو معادله را بدست آوردصورت سوال بسیار ساده و قابل فهم می باشد اما نکته ای که باعث میشود این سوال برنامه نویس را به چالش بکشد این است که جواب های معادله ممکن است از مرز حافظه های قابل استفاده در زبان برنامه نویسی عبور کند و عددی با۱۰۰۰۰۰ رقم تولید کند.


   برای حل این سوال می بایست جواب های معادله را به وسیله ی تکنیکی به دو بخش تقسیم کنیماین دوبخش حاصل باقیمانده ی جواب به دو عدد متفاوت است. ( انتخاب دو عدد متوالی ترجیح داده می شود برای مثال دو عدد ۱۰۰۰۰۰۰۰۰۱ و ۱۰۰۰۰۰۰۰۰۲ اینجا دیده میشود که عدد ۱ به صورت ۱ و ۱ بدست می آید و عدد ۱۰۰۰۰۰۰۰۰۳ به صورت ۱ و ۲ به دست می آید این روش تا عددی با تعداد ۱۰ به توان ۱۰ رقم را میتواند پشتیبانی کند !!!!


   ما ابتدا یک set از نوع pair می سازیم و شروع به بدست آوردن جواب ها به صورت موازی در دو متغیر می کنیم و باقیمانده دو متغیر را به عدد باقیمانده ی مربوط به متغیر بدست می آوریم و جایگزین متغیر می کنیم و آنها را در داخل ست وارد می کنیم.


این کد فقط برای یکی از معادلات هست :


st.insert( point(b1 , b1 ) );


long long a = b1 , b = b1;


for( int i = 0 ; i < n1-1 ; i++ ) {


a *= q1 ;


b *= q1 ;


a %= m1;


b %= m2;


st.insert( point( a , b) );


}



معادله ی دیگر نیز به همین شکل بدست می آوریم و داخل ست می کنیمسایز ست جواب سوال می باشد.