水题(water)(非详细解答)

传送

时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32768K,其他语言65536K
64bit IO Format: %lld

题目描述

其中,f(1)=1;f(2)=1;Z皇后的方案数:即在Z×Z的棋盘上放置Z个皇后,使其互不攻击的方案数。

输入描述:

输入数据共一行,两个正整数x,m,意义如“题目描述”。

输出描述:

一个正整数k,表示输出结尾0 的个数或者放置皇后的方案数

示例1
输入

375 16

输出

14200

说明

题解:
看了一阵子没明白,也是从其他人那学完之后,自己总结着再写
这个题内含三个小题:
1.判断是否存在k使得f(k)=xf(k)=x
2.n!在m进制下末尾零的个数
3.Z皇后方案数
解答:(非详细)
1.F函数其实就是斐波那契数列

斐波那契数列平方和的性质:(就是题目中所给公式)

    fi[1] = 1, fi[2] = 1;
    for (int i = 3;; ++i) {
   
        fi[i] = fi[i - 1] + fi[i - 2];
        if (fi[i] > 1e18) break;
    }

2.求n!在m进制的末尾0个数

首先一个结论:n!的质因子p的个数等于:1~n中p的倍数(n/p)加上(n/p)!中质因子p的个数

然后:
写出
将数W转化成m进制的末尾0的个数
的暴力代码是:

while(W%m==0)
{
   
	tot++;
	W/m;
}//tot计数

可以得到 W=a * mtot(n是mtot的倍数)

末尾几个0,tot就是几(tot是记录末尾0
的数量)

我们看 n ! 最多可以分解出多少个m
质因数 pi
设m=p1a1 *p2a2 *…*pkak
W = n!
n!= a * m tot
n!=a * (p1a1 *p2a2 *…*pkaktot

n!=a * p1b1 *p2b2 *…*pkbk

bk=ak *tot

求出!x最多可以分解出多少个pi

tot=min(bk/ak)
枚举k

ll prime[maxn] = {
   0, 2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59};

ll getsum(ll n,ll m){
   
    ll sum=0;
    while(n)
    {
   
        sum+=n/m;
        n/=m;
    }
    return sum;
}//n!的质因子p的个数

void ans_solve(){
   
	ll ans=1e18+3;
	M=m;
    for (int i = 1; prime[i] <= M; ++i) {
   
        while (M % prime[i] == 0) 
		{
   
			++ans1[prime[i]];
			M /= prime[i];
		}
    }
    
    for(int i=1;i<=25;i++){
   
        if(ans1[prime[i]])
		{
   
            ans2[prime[i]]=getsum(x,prime[i]);
        }
    }
    
    for(int i=1;i<=25;i++){
   
        if(ans1[prime[i]])
        ans=min(ans,ans2[prime[i]]/ans1[prime[i]]);
    }
    cout<<ans<<endl;
}

3.求z皇后方案数
z=x%min(13,m)+1
根据式子就能得到z的范围在1~13,范围不大直接打表就可以

ll dabiao()
{
   
	  z[1]=1;z[2]=0;z[3]=0;z[4]=2;
      z[5]=10;z[6]=4;z[7]=40;z[8]=92;
      z[9]=352;z[10]=724;z[11]=2680;
	  z[12]=14200;z[13]=73712;
 
 } 
cout<< z[x%min(13*1ll,k)+1];
全部评论

相关推荐

03-13 00:04
已编辑
吉林大学 Java
约面的挺突然。。狠下心接了1.自我介绍2.讲讲JAVA的反射3.可以继续讲讲AOP,动态代理[&nbsp;因为讲反射不小心吟唱到了例如AOP的动态代理,但是这块记忆的非常不熟,结果磕磕绊绊&nbsp;]4.项目我看你写了AOP和注解,具体怎么实现滑动窗口限流的[&nbsp;梦到什么说什么,吟唱八股发散千万不要散到自己不熟悉的区域&nbsp;]5.也讲讲为什么另一个项目选择令牌桶,具体流程6.&nbsp;OK,讲讲&nbsp;Redis&nbsp;的数据类型?还有吗?就了解这五种嘛[&nbsp;把5个的基础类型从应用对比到历届底层全都吟唱了一遍。一句还有吗直接没力气了,简历就写了理解5种,别的我是真一点没看TT&nbsp;]7.讲讲Redission分布式锁实现8.这个指数退避怎么实现的9.在这里有考虑去保障幂等性嘛10.这里为什么使用指数退避呢?&nbsp;什么时候用均匀重传[已经晕过去了说不了解,刚说了后就意识到,估计应该说指数退避能缓解压力防止下游服务器雪崩之类的]11.ok,那讲讲JMM12.讲讲RocketMQ如何保证的不丢消息13.讲讲RocketMQ延迟消息原理14.讲讲项目Redis实现会话记忆这一块15.如果ai调用function&nbsp;calling出现幻觉,有考虑怎么解决吗?[&nbsp;不了解,面试官说什么接口幂等化,高危操作人工防护,没在听,感觉人已经飞升了TT&nbsp;]16.mcp了解嘛?和function&nbsp;calling有什么区别[&nbsp;依旧不了解,只能说了个前者规范架构抽象解耦,后者耦合高只能算个工具调用]17.AI生成代码的代码质量怎么保障,那平时如何review的呢18.算法。lc215&nbsp;&nbsp;数组中最大第k个元素19.打算考研还是本科就业20.反问1️⃣有哪里不足,有哪些需要提高的部分。[主要说知识广度不够,多刷算法,让我别太紧张]2️⃣部门业务会做什么人生第二次面试。感觉大厂面试官的气场压力很大应该凉了不过这次面试非常锻炼心态,多面试,多面试。
冰炸橙汁_不做oj版:redis除了五种基本数据类型,其他的几种还是要掌握一下的,挺常用
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务