進貢 數學思維 奇數與質數與偶數的關係

2021-09-18 05:41:27 字數 1693 閱讀 1993

描述

古代的皇帝每年都要給神靈進貢,祈求來年風調雨順,國富民安。但是就算進貢再好的物品,神靈們也會有不滿意度的。

皇帝每年進貢的物品數量必須嚴格大於1份。

如果皇帝某一年進貢了m份貢品,那麼神靈的不滿意度為m的約數中,比m小且最大的那個。

現在假設國王要在k年內進貢完n份貢品,你能找出一種方案使得神靈的不滿意度之和最小嗎。

你只需要輸出最小的不滿意度的和即可。

為了幫助你更好的解決問題,心地善良的出題人給你提供了以下的小資訊。

在10^9 的範圍內,任何乙個大於22的偶數可以被兩個質數的和表示。

輸入

第一行乙個整數t(t≤1000)代表測試樣例數

接下來t行,每行乙個大於1的正整數n(2≤n≤1e9),和乙個正整數k(1≤k≤20)

保證900組資料中n是隨機給出的。

輸出輸出t個整數,分別表示每組樣例神靈的最小不滿意度。

輸入樣例 1

32 1

8 27 2

輸出樣例 112

1

思路:當n為偶數時,k等於1時,結果為不等於本身的最大約數,即n/2。

k大於1時,n可以分成兩個質數,,結果為2,即1+1。

當n為奇數時,k等於1時,如果n為質數,那麼結果為1,否則結果為不等於本身的最大約數,用乙個迴圈暴力求。

k等於2時,除了上述的情況,還有可以分解成 偶數+質數的情況,選擇最小的那個值。

k大於2時,除了上述情況,還有可以分解成 偶數+1,即 質數+質數+1==3,選擇最小的那個值。

來自學長的教導。

時間幾乎是最短的www

}if(a==n)//n為質數

int b;

for(int i=2; i<=500; i+=2)//分解成偶數+質數

}if(!flag)//是質數

}a=min(a,b);

printf("%d\n",min(3,a));

}else if(k==1)

}if(a==n)

printf("%d\n",a);

}else

}if(a==n)

int b;

for(int i=2; i<=500; i+=2)

}if(!flag)

}printf("%d\n",min(a,b));}}}}}

奇數與偶數

所謂偶數還是奇數,分別的關鍵在於是否存在 2 的因子。2n 1 是第 n 個奇數,2n 1,則是第 n 1 個奇數 最簡分數 pq 也即不存在公共因子 p,q 一定不會同時是偶數,但卻可以同時是奇數。奇數 b 一定可以表示為 b k a 1b 1 之後一定是偶數,a 可以取 2 2 a 1,2 b ...

軟體程式設計與數學思維

軟體程式設計與數學思維 張水坤 大眾科學 科學研究與實踐 2007年第08期 摘要 近年來,學科的高速發展已經明確地反映出這樣乙個特點 學科基礎研究和技術開發越來越多地同數學建立更為緊密的聯絡,對各種數學工具的使用不僅越來越廣泛,而且越來越深入。要掌握好軟體程式設計,數學思維是非常重要的。先討論軟體...

陣列與矩陣 奇數下標都是奇數或者偶數下標都是偶數

題目 奇數下標都是奇數或者偶數下標都是偶數 要求 給定乙個長度不小於2的陣列arr,實現乙個函式調整arr 要麼讓所有的偶數下標都是偶數,要麼讓所有的奇數下標都是奇數 時間複雜度o n 空間複雜度o 1 include include using namespace std void modify ...