數論合集 I

2021-06-21 23:30:11 字數 1460 閱讀 5173

由題意可以得出將u和i都轉化為i的方法,得到公式:s + 6 * k = 2^m 

排除某些情況,s必須為偶數,所以 q = s/2; q + 3*k = 2^n 

因為q % 3 != 0, 所以q = 3*a + b (b == 1 || b== 2)

即 3*c + b = 2^n = 2^(2*x + y)  = 2^y*(1+3)^x = 2^y * (1+3*w)

因為y == 0 || y == 1,所以 b== 1 || b == 2 均有解,故q % 3 != 0 即可滿足條件

#include #include using namespace std;

const int maxn = 1000005;

#define ok printf("yes\n")

#define no printf("no\n")

char s[maxn];

int main()

for (int i = 1; i< len; ++i)

p += s[i]=='i'?1:3;

}if (p == -1 )

if ((p & 1) == 0 && p %3 != 0 || p == 1)

ok;else

no;}

return 0;

}

dp、逆元:費馬小定理或輾轉相除

#include#include#include#pragma comment(linker, "/stack:1024000000,1024000000")

using namespace std;

#define ll __int64

const int maxn = 300005;

const ll mod = 1000000007;

ll cc[maxn];

ll mpower(ll a, ll b)

return res;

}ll invsele(ll a)

int n, m, k;

int da[maxn], mmp[maxn];

ll dp[maxn];

int main()

cc[n-k] = 1;

for (int i = n-k+1; i<= n; ++i)

for (int i = m; i>= 1; --i)

if (n-cnt > k)

dp[i] = cc[cnt]*mpower(tn-1, k-n+cnt)%mod*mpower(tn, n-cnt)%mod;

for (int j = 2; i*j <= m; ++j)

}for (int i = 1; i<= m; ++i)

puts("");

} return 0;

}

DLX演算法合集 I

dlx是一種相當神奇的資料結構,通常用於解決矩陣 多為稀疏矩陣 的 重複 精確 覆蓋的問題。不過一般這類問題的難點是抽出轉化關係,剩下的幾乎就是套模板 include include include include include include includeusing namespace std...

字尾自動機合集 I

有關字尾自動機的理論和證明各路大神的部落格多如牛毛,就不細說。貼圖太佔載入速度了,還是去看原版的解析吧 對於每個state點,father指向與該節點可接收相同字尾的節點,其表示的字串通常是當前節點表示字串的後面部分,因此state step sate father step 代表從任一字尾串起始走...

數論 又是畢業季I 又是畢業季II

題目簡化 為了把畢業晚會辦得更好,老師想要挑出默契程度最大的 k 個人參與畢業晚會彩排。可是如何挑呢?老師列出全班同學的號數 1,2,n 並且相信 k 個人的默契程度便是他們的最大公約數 這不是迷信哦 這可難為了他,請你幫幫忙吧!輸入格式 兩個空格分開的正整數n和k。n k 1 k 1e9,n 1e...