bzoj3957】的更多相关文章

gay队牛逼! 我们可以强行拆一下柿子,最终得到的值会是m^k*x+m^k*u(k)*a+m^k-1*u(k-1)*a……m^0*u(0)*a 其中u表示后面有i个m的a有多少个 答案就是k+∑u 枚举每一个k,然后贪心选择u(k),那么k越大u(k)也尽可能取大,答案才会越小 其实想过拆柿子的啊,但是有些u=0我把这些位给忽略掉啦,搞得不是很会 #include<cstdio> #include<iostream> #include<cstring> #include…
数学+模拟 细节很多 首先我们发现,如果两个区间已经包含,那么可以输出empty,一个数能通过变换得到另一个区间的数,这个区间的大小必须小于等于终点区间的大小.加法不会改变区间大小,只有乘法会改变,而且每次乘法会使区间大小扩大m倍.其实我们发现,最终一个数会变成p*x+y,x是m的几次幂,y是一个a乘上一些m的幂再加上一些a.x=m^l+a(A0*m^l+A1*m^n-1+...+An)所以我们就是要把后面的东西展开. 但是题目要求操作数最少且字典序最小.所以我们要枚举最大的次数,枚举次数时还要…