ACM训练日记

您所在的位置:网站首页 怎样学会分身术 ACM训练日记

ACM训练日记

2024-06-13 19:58| 来源: 网络整理| 查看: 265

       周末跟风刷版题刷嗨了,居然忘记写日记,今天补上吧。

       这次就整理下之前牛客网比赛的题目和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