時間限制:500ms 記憶體限制:65536k
相傳漢高祖劉邦問大將軍韓信統御兵士多少,韓信答說,每3人一列餘1人、5人一列餘2人、7人一列餘4人、13人一列餘6人、 17人一列餘2人、19人一列餘10人、23人一列餘1人、29人一列餘11人。
劉邦茫然而不知其數。你呢? 你是一位優秀的程式設計師,請你幫劉邦解決這一問題。
要求由鍵盤輸入a,b,c,d,e,f,g,h,a,b,c,d,e,f,g,h十六個數,分別代表每a人一列餘a、每b人一列餘b、每c人一列餘c、每d人一列餘d、每e人一列餘e、每f人一列餘f、每g人一列餘g、每h人一列餘h,其中a,b,c,d,e,f,g,h為互不相等的質數
輸出總兵士數,要求輸出滿足條件的最小的乙個,但要滿足8種排法的每一種排法至少可排一列。(保證給的資料,有結果且計算的結果不會超過2的63次方)
2 3 5 7 11 13 17 191 1 1 1 1 1 1 1
9699691
暑假看了點數論,在網上看了些中國剩餘定理,回頭寫這道數學題/呲牙
//#pragma comment(linker, "/stack:1024000000,1024000000")
#include #include #include #include #include #include #include #include #include #include #include #include using namespace std;
#define mp make_pair
#define pb push_back
#define mst(a,b) memset((a),(b),sizeof(a))
#define test cout<<"*************************"<= (e); i-=(down))
#define rep1(s,n,up) for(int j = (s); j < (n); j+=(up))
#define per1(n,e,down) for(int j = (n); j >= (e); j-=(down))
typedef long long ll;
typedef unsigned long long ull;
typedef pairpii;
typedef vectorvi;
typedef vectorvii;
const int inf = 0x3f3f3f3f;
const ll inf = (1ull << 63) - 1;
const double pi = acos(-1.0);
const int maxn = (1 << 16) + 7;
const ull hashmod = 29050993;
const double esp=1e-6;
//#define local
int main()
rep(0,8,1)
temp_m=m;
while(m%divisor[i]!=1)
m+=temp_m;
sum+=m*remainder[i];
}sum%=tot_m;
while(sum
韓信點兵python演算法 韓信點兵演算法
秦朝末年,楚漢相爭。一次,韓信將1500名將士與楚王大將李鋒交戰。苦戰一場,楚軍不敵,敗退回營,漢軍也死傷四五百人,於是韓信整頓兵馬也返回大本營。當行至一山坡,忽有後軍來報,說有楚軍騎兵追來。只見遠方塵土飛揚,殺聲震天。漢軍本來已十分疲憊,這時隊伍大譁。韓信兵馬到坡頂,見來敵不足五百騎,便急速點兵迎...
韓信點兵演算法
孫子算經 中給出這類問題的解法 三三數之剩二,則置一百四十 五五數之剩三,置六十三 七七數之剩二,置三十 並之得二百三十三,以二百一十減之,即得。凡三三數之剩一,則置七十 五五數之剩一,則置二十一 七七數之剩一,則置十五,一百六以上,以一百五減之,即得。用現代語言說明這個解法就是 首先找出能被5與7...
Problem A 韓信點兵
劉邦問韓信 你覺得我可以帶兵多少?韓信 最多十萬。劉邦不解的問 那你呢?韓信自豪地說 越多越好,多多益善嘛!劉邦半開玩笑半認真的說 那我不是打不過你?韓信說 不,主公是駕馭將軍的人才,不是駕馭士兵的,而將士們是專門訓練士兵的.某此戰役,韓信就帶15000名士兵上戰場廝殺,不幸,戰死些許士兵,但具體數...