首页 > 其他分享 >CF1698G Long Binary String

CF1698G Long Binary String

时间:2022-11-16 14:23:10浏览次数:79  
标签:Binary return String ll Bo Long u128 using define

题面传送门

以前一直以为BSGS要有逆才能做/xia

首先观察一下,全序列第一个\(1\)显然是消不掉的,因为没有比它更前面的异或了,同理最后面的也是消不掉的。

因此我们已经知道了这两个一的位置,那么中间的要被全部消完。

如果将这个过程看成多项式乘法,设原来的序列为\(A\),那么我们其实就是要求这样子\(a\)的最小整数解:

\(x^a+1\bmod A=0\)。

直接BSGS即可。

然后BSGS还能这么拆\(x^a=x^{c\times k2-b}\)。

时间复杂度\(O(|S|2^{\frac{|S|}{2}})\)

code:

#include<bits/stdc++.h>
#define Gc() getchar() 
#define Me(x,y) memset(x,y,sizeof(x))
#define Mc(x,y) memcpy(x,y,sizeof(x))
#define R(n) (rnd()%(n))
#define Pc(x) putchar(x)
#define LB lower_bound
#define UB upper_bound
#define PB push_back
using ll=long long;using db=double;using lb=long db;using ui=unsigned;using ull=unsigned ll;using u128=__int128;
using namespace std;const int N=50+5,M=(1<<17)+5,K=(1<<10)+5,mod=998244353,Mod=mod-1;ll INF=1e18+7;const db eps=1e-5;mt19937 rnd(time(0));
int n,x,k,Ct;ll A,B,C,Bo;char s[N];map<ll,int> f;
ll ksc(u128 A,u128 B,u128 p){u128 C=0;for(int i=0;i<n-1;i++) B>>i&1&&(C^=A<<i);for(int i=2*n-2;i>=n-1;i--)if(C>>i&1) C^=(p<<i-n+1);return C;}
int main(){
	freopen("1.in","r",stdin);
	int i,j;scanf("%s",s+1);n=strlen(s+1);for(i=1;i<=n;i++) A|=(1ll*(s[i]-'0')<<i-1);while(n&&!(A>>(n-1))&1) n--;
	if(!A) {puts("-1");return 0;}while(A%2==0) A/=2,n--,Ct++;if(A==1){printf("%d %d\n",Ct+1,Ct+2);return 0;}
	//Bo=2;B=1;for(i=1;i;i++){B=ksc(B,Bo,A);if(B==1){printf("%d\n",i);return 0;} }
	k=n/2;Bo=2;B=1;for(i=0;i<(1<<k);i++) f.count(B)?(printf("%d %d\n",Ct+1,Ct+1+i),exit(0),0):(f[B]=i),B=ksc(Bo,B,A);
	C=B;for(i=1;i<(1<<n-k);i++)if(f.count(C)){printf("%d %lld\n",Ct+1,Ct+1+(1ll*i<<k)-f[C]);return 0;}else C=ksc(C,B,A);puts("-1");
}

标签:Binary,return,String,ll,Bo,Long,u128,using,define
From: https://www.cnblogs.com/275307894a/p/16895749.html

相关文章

  • C++ Folly库解读(零) Fbstring—— 一个完美替代std::string的库
     在引入fbstring之前,我们首先再回顾一下string常见的三种实现方式。string常见的三种实现方式string中比较重要的3个字段:char*data.指向存放字符串的首地址(......
  • C#中StringBuilder()对象清除的常用方法
    在实际项目中,经常遇到拼接字符串的功能需求。从技术层面来讲可以用实例化StringBuilder()来实现。对于拼接内容较多,可能还会根据业务逻辑规则的不同拼接新的或更新文本内......
  • c++常用string函数转载
    转载地址:https://blog.csdn.net/weixin_45313447/article/details/114318554?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522166856136316800182722804%2522%2......
  • 在jsp页面int和String类型的相互转换
    浅浅地来做一个对比吧!.java文件int转成string类型:Strings=String.valueOf(intm);String转成int类型:intm=Integer.parseInt(Strings);.jsp页面中进行int和String类......
  • String StringBuffer StringBuilder
    Stringisfixed,soobjectwhencreated,itcannotbemodifiedanymore.it'sineffective.in-effulent;whenyouuse"+"tocombinetwoString,viaanti-compil......
  • QString转char*
    方法如下:Qstring str;char* ch;QByteArrayba=str.toLatin1();  ch=ba.data();这样就完成了QString向char*的转化。经测试程序运行时不会出现bug补充:以上方法......
  • Java String类的isEmpty(),null的区别
    JavaString类的isEmpty(),null的区别一、理解isEmpty()完全等同于string.length()==0若String对象本身是NULL,即字符串对象的引用是空指针,那在使用String.isEmpty()方法......
  • 2 springMVC-处理器方法的返回值ModeVeiw,String,void,Object,List<Object>,String对
    2处理器方法的返回值使用@Controller注解的处理器的处理器方法,其返回值常用的有四种类型:➢第一种:ModelAndView➢第二种:String➢第三种:无返回值void➢第四种:......
  • Javascript中字符串的instanceof String的结果
    如果是单纯的字符串赋给变量,虽然类型为string,但是instanceofString是false,并不是String对象,因为没有创建实例. 而这种new一个String实例则instanceof是属于String......
  • 开启String去重XX:+UseStringDeduplication的利与弊
    开启String去重XX:+UseStringDeduplication的利与弊 原文在这里: 开启String去重XX:+UseStringDeduplication的利与弊首先来看下由JDK开发组研究得出的一组有......