NOIP模擬(20171024)T3 數學

2021-08-09 19:05:30 字數 3197 閱讀 5346

求滿足方程ax

≡xa(

mod2n)

的解的個數 n≤

30,a≤

109詢問組數t≤

1000

引理一:若a,

b 均為奇數,且a2

k+1≡

b2k+

1(mod2n)

,則a≡

b(mod2n)

證明: ∵a

2k+1

≡b2k

+1(mod2n

) ∴a

2k+1

−b2k

+1≡0

(mod2n

) ∴(

a−b)

(a2k

+a2k

−1b+

a2k−

2b2+

⋯+b2

k)≡0

(mod2n

) 由於a

2k+a

2k−1

b+a2

k−2b

2+⋯+

b2k 為奇數項奇數之和,為奇數 a2

k+a2

k−1b

+a2k

−2b2

+⋯+b

2k≡/0

(mod2n

) ∴a

−b≡0

(mod2n

) ∴a

≡b(mod2n

) 引理二:若

a 為奇數,

n為大於2的正整數,則a2

n−2≡

1(mod2n)

證明: 當n

=3時,顯然成立 當n

=k時成立,即a2

k−2≡

1(mod2k)

則a2k−2≡

1或2k

+1(mod2k

+1)

又∵12

≡1(mod2k

+1),

(2k+

1)2≡

22k+

2×2k

+1≡1

(mod2k

+1)

∴a2k

−1≡(

a2k−

2)2≡

1(mod2k+

1)故當n=

k+1 時也成立

引理三:當

a 為奇數時,解在模意義下唯一,為am

od2n

證明: ∵a

x≡xa

(mod2n

) ∴a

x≡xa

(mod2n

−1)a

x≡xa

(mod2n

−2)⋯

ax≡x

a(mod2)

∴a,x

均為奇數

∵當a為奇數時

,a2≡

1(mod4),

a2≡1

(mod8)

∴ax≡a

(mod4)

,ax≡

a(mod8)

xa≡x

(mod4)

,xa≡

x(mod8)

∴a≡x

(mod4)

,a≡x

(mod8)

下證當m=1

,2,3

…,k(

3≤k時均有 a≡

x(mod2m)

則當m=

k+1 時,a≡

x(mod2m)

亦成立

由引理二得a2

k−1≡

1(mod2k+

1) 設

a≡x≡

c(mod2k−

1) ∴

ac≡a

x≡xa

≡xc(

mod2k+

1) 由

∵a,x

均為奇數 ∴c

為奇數

由引理一得a≡

x(mod2k+

1)故當m=

k+1 時,a≡

x(mod2m)

成立故x

≡a(mod2n

) (考場上只會打表找規律的我對此證明表示,「呵呵」)

好那麼當

a 為奇數時輸出1即可 當a

為偶數時易得ax

≡0(mod230

)(x≥

30)顯然對於任意n≤

30 ,均有ax

≡0(mod2n

)(x≥

30)那麼對於小於30的

x 我們暴力找即可

對於大於30的

x,必有xa

≡0(mod2n

) xa

≡0(mod2n

) 的充要條件為 x≡

0(mod2⌈n

a⌉)

暴力統計即可

**

#include

#define len

using

namespace

std;

inline

long

long getint()

while(isdigit(c))

return x*p;

}inline

void putint(long

long x)

static

long

long buf[22];

long

long tot=0;

dowhile(x);

while(tot)putchar(buf[--tot]+'0');

}inline

long

long ksm(long

long a,long

long b,long

long c)

return ans;

}inline

void work(long

long a,long

long n)

long

long mod=1

long ans=0;

for(long

long i=1;i<=30;++i)

long

long need=(n-1)/a+1,n2=1

<30/n2;

putint(ans),putchar('\n');

}int main()

return

0;}

NOIP模擬(20171024)T2 乘積

求從1 n中選k個數,使得這k個數的乘積不含完全平方因子 70 n 30 100 n 500 狀壓dp,f i j k 表示前i個數,選了j個,當前所選數之積分解質因數後的狀態為k k表示成二進位制後,第一位表示有沒有2,第二位表示有沒有3 以此類推 令i 1分解質因數後狀態為po s i 1 f ...

NOIP模擬(10 30)T1 比賽

比賽 題目背景 10.30 noip 模擬t1 分析 暴力 將資料從小到大排序,從大到小找到第乙個滿足 a i k a i 1 的位置,那麼答案就是 n i 了,如果找不到那麼就是 n了 注意邊界 source created by scarlyw include include include i...

NOIP模擬(20171031)T3 紙帶

有乙個紙帶 每次區間染色,同乙個地方後染的顏色覆蓋先染的,求最後紙帶上顏色種類數。咦,這不是線段樹嗎?咦,倒過來做好像很方便啊?咦,離散化有坑?區間塗色,若該顏色所在區間均被染色,則該顏色按原順序操作後會被後面的顏色覆蓋 注意離散化 本來三個顏色3 8,2 5,7 9,最後6號點上顏色是1 離散化後...