p1373 奶牛的臥室
2023年6月12日
奶牛們有乙個習慣,那就是根據自己的編號選擇床號。如果一頭奶牛編號是a,並且有0..k-1一共k張床,那麼她就會選擇(a mod k)號床作為她睡覺的地點。顯然,2頭牛不能睡在一張床上。那麼給出一些奶牛的編號,請你為她們準備一間臥室,使得裡面的床的個數最少。【分析】
本題要求的,就是找乙個最小的數m,使得任意兩個數x,y,滿足:
(x mod m) != (y mod m).
根據結論:
當((x - y) mod m) != 0,則有:(x mod m) != (y mod m).
證明:所以本題是找乙個最小的數,這個數應滿足不是任何兩個數的差的約數。設:a % m = b % m = k,
則:a = p1 * m + k; b = p2 * m + k.
(a - b) = (p1 - p2) * m,(a - b) mod m = 0.
用反證,可以證明結論正確。
【過程】
本題的思路是將任意兩個數的差的絕對值記錄下來,並求出他們的所有約數,那麼最小的乙個不是約數的數就是本題所求的數。
但是因為資料量太大,o=n*max(5000*1000000),所以將所有差的約數記錄下來不現實,所以可以採取邊記錄邊尋找的方法。將所有的差記錄下來,從n開始到最大的num[n],按順序尋找,如果這個數是任意差的約數,break並檢查下乙個數。
根據抽屜原理,所求的數字最小是n,最大是num[n].【** c++】
#include
#include
#include
#include
#include
#include
#include
using
namespace
std;
#define maxx 10000010
int n;
int num[5100], ans = 0;
bool recalls[maxx];
//記錄任意兩個數的差
int main()
if(recalls[i] == true)}}
return
0;}
p1373 奶牛的臥室
描述 description 奶牛們有乙個習慣,那就是根據自己的編號選擇床號。如果一頭奶牛編號是a,並且有0.k 1一共k張床,那麼她就會選擇a mod k號床作為她睡覺的地點。顯然,2頭牛不能睡在一張床上。那麼給出一些奶牛的編號,請你為她們準備一間臥室,使得裡面的床的個數最少。輸入格式 input...
P1373 小a和uim之大逃離
小a和uim來到雨林中探險。突然一陣北風吹來,一片烏雲從北部天邊急湧過來,還伴著一道道閃電,一陣陣雷聲。剎那間,狂風大作,烏雲布滿了天空,緊接著豆大的雨點從天空中打落下來,只見前方出現了乙個披頭散髮 青面獠牙的怪物,低沉著聲音說 呵呵,既然你們來到這,只能活下來乙個!小a和他的小夥伴都驚呆了!瞬間,...
P1373 小a和uim之大逃離
題目描述 瞬間,地面上出現了乙個n m的巨幅矩陣,矩陣的每個格仔上有一坨0 k不等量的魔液。怪物各給了小a和uim乙個魔瓶,說道,你們可以從矩陣的任乙個格仔開始,每次向右或向下走一步,從任乙個格仔結束。開始時小a用魔瓶吸收地面上的魔液,下一步由uim吸收,如此交替下去,並且要求最後一步必須由uim吸...