sdutoj 3896 HEX 思維 組合數

2021-08-01 02:18:58 字數 1247 閱讀 6653

題目鏈結

題意:

問你從(1,1)到(a,b)有幾種走法

思路;這個題我們集訓隊的大佬提供了很好的思路,我們起始位置在(1,1)可以走到(2,1) (3,2)(2,2)

座標分別增加了(1,0) (2,1) (1,1) 我們可以將三個看成三個向量 對於要達到的目的(a,b

)可以列出乙個

等式: x(1,0)+y(2,1)+z(1,1)+(1,1)=(a,b)  可以列出兩個方程.x+2*y+z=a-1,y+z=b-1. (x,y,z分別表示往(1,0),(2,1),(1,1)方向走了幾次),那麼可以的到走法為c(x+y+z,x)*c(y+z,y)*c(z,z)。因為只有兩個方程三個未知數

所以我們需要列舉乙個然後求結果.a,b最多為1e5,組合數問題用費馬小定理求逆元來解決就可以了

#include#define ri(a) scanf("%d", &a)

#define rl(a) scanf("%lld", &a)

#define rf(a) scanf("%lf", &a)

#define rs(a) scanf("%s", a)

#define pi(a) printf("%d\n", (a))

#define pf(a) printf("%lf\n", (a))

#define pl(a) printf("%lld\n", (a))

#define ps(a) printf("%s\n", (a))

#define w(a) while(a--)

#define clr(a, b) memset(a, (b), sizeof(a))

#define mod 1000000007

#define inf 0x3f3f3f3f

#define exp 0.00000001

#define pii pair#define mp make_pair

#define pb push_back

using namespace std;

typedef long long ll;

const int maxn=1e5+10;

ll f[maxn+1],inv[maxn+1];

int a,b,x,y,z;

ll quickpow(ll w,ll l)

return ans;

}void init()

return ;

}ll c(int n,int k)

{ if(n

389 找不同(亦或運算)

package test 389.找不同 給定兩個字串 s 和 t,它們只包含小寫字母。字串 t 由字串 s 隨機重排,然後在隨機位置新增乙個字母。請找出在 t 中被新增的字母。示例 輸入 s abcd t abcde 輸出 e 解釋 e 是那個被新增的字母。public class number ...

leetcode題目 389 找不同

給定兩個字串 s 和 t,它們只包含小寫字母。字串 t 由字串 s 隨機重排,然後在隨機位置新增乙個字母。請找出在 t 中被新增的字母。輸入 s abcd t abcde 輸出 e 解釋 e 是那個被新增的字母。先用hashmap統計t t為較長的那個字串 的字母頻率,然後再遍歷s的字母,遇到乙個字...

LeetCode題解 389 找不同

瞧一瞧 求star 給定兩個字串 s 和 t,它們只包含小寫字母。字串 t 由字串 s 隨機重排,然後在隨機位置新增乙個字母。請找出在 t 中被新增的字母。示例 輸入 s abcd t abcde 輸出 e 解釋 e 是那個被新增的字母。思路 var findthedifference functi...