約數倍數選卡片

2021-09-13 12:27:35 字數 977 閱讀 8647

問題描述

閒暇時,福爾摩斯和華生玩乙個遊戲:

在n張卡片上寫有n個整數。兩人輪流拿走一張卡片。要求下乙個人拿的數字一定是前乙個人拿的數字的約數或倍數。例如,某次福爾摩斯拿走的卡片上寫著數字「6」,則接下來華生可以拿的數字包括:

1,2,3, 6,12,18,24 ....

當輪到某一方拿卡片時,沒有滿足要求的卡片可選,則該方為輸方。

請你利用計算機的優勢計算一下,在已知所有卡片上的數字和可選哪些數字的條件下,怎樣選擇才能保證必勝!

當選多個數字都可以必勝時,輸出其中最小的數字。如果無論如何都會輸,則輸出-1。

輸入格式

輸入資料為2行。第一行是若干空格分開的整數(每個整數介於1~100間),表示當前剩餘的所有卡片。

第二行也是若干空格分開的整數,表示可以選的數字。當然,第二行的數字必須完全包含在第一行的數字中。

輸出格式

程式則輸出必勝的招法!!

樣例輸入

2 3 6

3 6樣例輸出

樣例輸入

1 2 2 3 3 4 5

3 4 5

樣例輸出

#include #include #include #include #include using namespace std;

int a[1005];

int b[1005];

int vis[1005];

int ans=1005;

vectorgn[1005];

bool dfs(int k)}}

vis[k]=0;

return true;

}int main()

{ int i=0,j=0;

memset(vis, 0, sizeof(vis));

while(~scanf("%d",&a[i]))

{// a[i++]=num;

for(int k=0;k只過了80%、、、、最後乙個tle了

13 4 約數倍數選卡片

閒暇時,福爾摩斯和華生玩乙個遊戲 在n張卡片上寫有n個整數。兩人輪流拿走一張卡片。要求下乙個人拿的數字一定是前乙個人拿的數字的約數或倍數。例如,某次福爾摩斯拿走的卡片上寫著數字 6 則接下來華生可以拿的數字包括 1,2,3,6,12,18,24 當輪到某一方拿卡片時,沒有滿足要求的卡片可選,則該方為...

藍橋杯 約數倍數選卡片

問題描述 閒暇時,和華生玩乙個遊戲 在n張卡片上寫有n個整數。兩人輪流拿走一張卡片。要求下乙個人拿的數字一定是前乙個人拿的數字的約數或倍數。例如,某次福爾摩斯拿走的卡片上寫著數字 6 則接下來華生可以拿的數字包括 1,2,3,6,12,18,24 當輪到某一方拿卡片時,沒有滿足要求的卡片可選,則該方...

歷屆試題 約數倍數選卡片 博弈論?dfs

問題描述 閒暇時,福爾摩斯和華生玩乙個遊戲 在n張卡片上寫有n個整數。兩人輪流拿走一張卡片。要求下乙個人拿的數字一定是前乙個人拿的數字的約數或倍數。例如,某次福爾摩斯拿走的卡片上寫著數字 6 則接下來華生可以拿的數字包括 1,2,3,6,12,18,24 當輪到某一方拿卡片時,沒有滿足要求的卡片可選...