賽後題解 真假亞瑟王(數論)

2021-10-17 11:59:54 字數 3103 閱讀 3192

c. 真假亞瑟王

題目描述

魔術師梅林在水晶球中預見了莫德雷德的叛逆,她決定在在莫德雷德叛逆之前採取乙個有效的策略保護亞瑟王。

具體做法如下:使用魔法將亞瑟王複製成n份,當然,其中只有乙個使真的。她認為這樣就能有效的保護亞瑟王不被殺死。

為了自己能最終找到亞瑟王,她將所有的亞瑟王按1-n編號,並設定了乙個密碼數字x。真亞瑟王的編號是最接近n的且不能被2−x中任何乙個數整除的數。(即真亞瑟王的編號的約數不再2−x中)。

輸入
兩個整數x,n,用乙個空格隔開。

輸出
真亞瑟王的編號。

樣例輸入
3 6

樣例輸出
樣例輸入
3 4

樣例輸出
樣例輸入
5 50

樣例輸出
提示
【資料範圍】

對於30%的資料,2≤x

≤n≤10

2≤x≤n≤10

2≤x≤n≤

10對於60%的資料,2≤x

≤n

≤1000

2≤x≤n≤1000

2≤x≤n≤

1000

對於80%的資料,2≤x

≤n≤1

05

2≤x≤n≤10^5

2≤x≤n≤

105對於100%的資料,2≤x

≤n≤1

09

2≤x≤n≤10^9

2≤x≤n≤

109

解決思路:分類討論
提示:不合法代表一定不是答案,合法代表一定是答案。

已知:對於整數n

nn,小於等於n

nn且距離最近的素數離n

nn不會太遠,所以直接暴力列舉,判斷素數即可。

第一類:x2≥

nx^2 \ge n

x2≥n

1、因為乙個合數肯定有乙個小於等於根號的因子,所以小於等於n

nn的所有合數的最小因子必然在區間[2,

x]

[2,x]

[2,x

]內,因此[2,n

]2,n]

2,n]

的合數不合法。

2、[ 2,

x]

[2,x]

[2,x

]的每個數不合法。

綜上所述,[x+

1,n]

[x+1,n]

[x+1,n

]的素數可能合法。

暴力判斷小於等於n

nn且距離最近的素數(前提是大於等於x+1

x+1x+

1或者大於xxx)

若存在素數,輸出素數。

若不存在素數,輸出1

11(由於[2,

n]

[2,n]

[2,n

]中沒有乙個數合法,只剩下數字1

11了)

第二類:x

2<

nx^2 < n

x2<

n1、因為乙個合數肯定有乙個小於等於根號的因子,所以小於等於x

2x^2

x2的所有合數的最小因子必然在區間[2,

x]

[2,x]

[2,x

]內,因此[2,

x2

][2,x^2]

[2,x2]

的合數不合法,但是[x2

+1,n

][x^2+1,n]

[x2+1,

n]的合數可能合法。

例如:x=2

,n=99

x=2,n=99

x=2,n=

99時,99

9999

合法但是是合數。

2、[ x+

1,n]

[x+1,n]

[x+1,n

]的素數可能合法。

綜上所述,從n

nn開始往小於n

nn的數開始判斷,如果這個數是素數或者它不是[2,

x]

[2,x]

[2,x

]中任意數的倍數的話,輸出這個數即可(直接列舉小於根號的因子判斷是否在[2,

x]

[2,x]

[2,x]內)

**
#include

#include

#include

#include

#include

using

namespace std;

#define mod 77797

typedef

long

long ll;

const

int n =

2e1+10;

const ll inf =

0x3f3f3f3f3f3f3f3f

;bool

judge

(int n,

int x)

}return

true;}

bool

isprime

(ll n)

}return

true;}

intmain()

n--;}

cout <<

1<< endl;

return0;

}else

n--;}

}return0;

}

題解 亞瑟王的宮殿

在此之前,該題已經有很多題解,但它們大多是列舉國王周圍 5 times 5 的範圍 玄學貪心?最後計算最小距離。雖然能 ac 但其實這種做法是不嚴謹的 詳見巨佬的hack資料 然而將 5 times 5 的範圍擴大至 r times c 的範圍後,時間複雜度過大。那麼,這道題真的無解了嗎?蒟蒻的我用...

概率 亞瑟王

題目描述 小 k 不慎被 ll 邪教 了,程度深到他甚至想要從亞瑟王邪教中脫坑。他決定,在脫坑之前,最後再來打一盤亞瑟王。既然是最後一戰,就一定要打得漂亮。眾所周知,亞瑟王是乙個看臉的遊戲,技能的發動都是看概率的。作為乙個非洲人,同時作為乙個前 oier,小 k 自然是希望最大化造成傷害的期望值。但...

usaco3 3 4亞瑟王的宮殿

對於騎士帶王去會合的情況,列舉王的原位置和八個方向,也就是說王和騎士的匯合點相對於王的原位置為上下左右或者斜45度方向。比如在8 8的棋盤上,王的位置用k表示,需要列舉的帶王的點用1表示,其餘點用0表示則有下圖 0 0 1 0 0 1 0 0 1 0 1 0 1 0 0 0 0 1 1 1 0 0 ...