ACM训练日记 |
您所在的位置:网站首页 › 怎样学会分身术 › ACM训练日记 |
周末跟风刷版题刷嗨了,居然忘记写日记,今天补上吧。 这次就整理下之前牛客网比赛的题目和Nim博弈和SG函数。 Wannafly挑战赛11 1,白兔的分身术 白兔学会了分身术。 一开始有一只白兔,接下来会进行k轮操作,每一轮中每一只白兔都会变成p只白兔。要求k轮后白兔的总数恰好为n。要求找到两个正整数p,k,最大化p+k 水题,其实就是输出n+1,千万别把n因子分解了,否则就掉坑里了。 2,白兔的式子 已知f[1][1]=1,f[i][j]=a*f[i-1][j]+b*f[i-1][j-1](i>=2,1 if(b&1) res = (res * a) % p; a = (a*a) % p; b >>= 1; } return res; } void init(long long p) { F[0] = 1; for(int i = 1;i long long ans = 1; while(n&&m) { long long a = n%p; long long b = m%p; if(a < b) return 0; ans = ans*F[a]%p*inv(F[b]*F[a-b]%p,p)%p; n /= p; m /= p; } return ans; } int main() { ll n,m,a,b; int T; ll ans; init(100005);//一定要预处理这个 scanf("%d",&T); while(T--) { scanf("%lld%lld%lld%lld",&a,&b,&n,&m); if(m>n) { cout |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |