首页 > 其他分享 >CF1562C Rings

CF1562C Rings

时间:2024-01-21 09:33:24浏览次数:35  
标签:lfloor CF1562C frac 二进制 Rings pos rfloor

CF1526C Rings

题目传送门

题目大意

从一个长度为\(n\)的二进制数中截取两个长度大于等于\(\lfloor \frac{n}{2} \rfloor\)的二进制数,使两个数存在倍数(正整数倍)关系

思路

不要想太复杂,这题真的没那么难(虽然我最开始也想复杂了

可以在\(0\)上做文章

举个例子,假如我有一个二进制数\(10010\),那么如果在他的后面添加几个\(0\),新的数和他一定存在倍数关系(其实就相当于做左移运算)

而如果在他的前面添加\(0\),他的值是不会变的,也就是存在\(1\)倍关系

据此,可以找到这个二进制数中的第一个\(0\)的位置(\(pos\)):

  • \(pos \leq \lfloor \frac{n}{2} \rfloor\) 那么可以构造出\([pos,n]\)和\([pos+1,n]\),它们存在一倍(即相等)关系

  • \(\lfloor \frac{n}{2} \rfloor <pos\) 则可以构造出\([1,pos-1]\),\([1,pos]\),它们存在二倍关系(即一个末尾比另一个多出来一个\(0\))

  • \(pos\)不存在(也就是\(n\)里边全是\(1\)) 任意截取两段端点不同长度相同且大于\(\lfloor \frac{n}{2} \rfloor\)即可,为了方便我就是截取了\([1,\lfloor \frac{n}{2} \rfloor]\),\([2,\lfloor \frac{n}{2} \rfloor+1]\)

代码

#include<bits/stdc++.h>
#define int long long
using namespace std;
void run()
{
    string s;
    int n,flag=0;
    cin>>n>>s;
    for(int i=1;i<=n;i++)
    {
        if(s[i-1]=='0')
        {
            if(i<=n/2) cout<<i<<" "<<n<<" "<<i+1<<" "<<n<<endl;
            else cout<<1<<" "<<i<<" "<<1<<" "<<i-1<<endl;
            flag=1;
            break;
        }
    }
    if(!flag) cout<<1<<" "<<n/2<<" "<<2<<" "<<n/2+1<<endl;
    return;
}
signed main(){
    ios::sync_with_stdio(0);
    cin.tie(0);cout.tie(0);
    int t;
    cin>>t;
    while(t--) run();
    system("echo. & pause");
    return 0;
}

标签:lfloor,CF1562C,frac,二进制,Rings,pos,rfloor
From: https://www.cnblogs.com/lyk2010/p/17977525

相关文章

  • springboot整合springSecurity入门案例(实现登录,记住我等常用标签使用)
    一,整合进依赖每个依赖都标了注释,大家可以按照自己需要的来添加,置于配置问件啥的,大家可以参考springboot+mybatisplus+redis整合(附上脚手架完整代码)<!--主要就是加了这个依赖--><dependency><groupId>org.springframework.security</groupId><artifact......
  • SpringSecurity-记得我
    原理在用户发送认证请求之后,或调用我们之前说过的usernamePasswordAuthenticationFilter这个过滤器,认证成功之后会调用一个RemeberMeService服务;负责针对每一用户生成一个Token,然后将token写入到浏览器的Cookie里面,同时会使用:TokenRepository将这个token写入数据库中。将Toke......
  • CF1830C Hyperregular Bracket Strings
    HyperregularBracketStringsLuoguCF1830C题目描述给定一个数\(n\)和\(k\)个区间\(\left[l_i,r_i\right]\in[1,n]\)。我们定义,对于一个长度为\(n\)的,仅由(和)组成的合法括号序列,如果它的每一个区间\(\left[l_i,r_i\right]\)内的子串都是合法括号序列,那么这个......
  • 无涯教程-MATLAB - 字符串(Strings)
    在MATLAB中创建字符串非常简单,实际上,我们已经使用了很多次。例如,您在命令提示符下键入以下内容-my_string='LearnfkPoint'MATLAB将执行上述语句并返回以下输出-my_string=LearnfkPointMATLAB将所有变量视为数组,而字符串则视为字符数组,让我们使用whos命令检查上面创建的变......
  • SpringSecurity-图片验证码
    图片验证码生成Core模块封装验证码类publicclassImageCode{    privateBufferedImageimage;    /**     *code是一个随机数,图片是根据随机数生成的,     *存放到session里面,后面用户提交登录请求时候要去验证的     */    private......
  • SpringSecurity-认证流程源码级详解
    自定义用户认证逻辑处理用户信息获取逻辑:UserDetailsService处理用户校验逻辑:UserDetails处理密码加密解密:PasswordEncoder认证处理流程以表单认证为例:从发起认证请求到认证过滤器,接着认证成功后,响应从认证过滤器返回的整个过程。SpringSecurity做了什么,设计到了哪些类?他......
  • SpringSecurity系列,第四章:源码分析
    源码分析SpringSecurity的核心功能即为:认证(Authentication)、授权(Authorization)一、概览1、在SpringSecurity中,用户的认证信息主要由Authentication的实现类来保存,Authentication接口定义如下:【保存用户认证信息】publicinterfaceAuthenticationextendsPrin......
  • SpringSecurity表单认证(二)
    用户名+密码系统默认登录用户名:user密码每次服务启动后随机生成密码用户信息获取原理(数据库获取)实现该接口,security默认自动生成密码关闭。框架源码:packageorg.springframework.security.core.userdetails;publicinterfaceUserDetailsService{UserDetailsloa......
  • SpringSecurity表单认证(一)
    配置类创建securityConfig,并继承WebSecurityConfigurerAdapter,它是web应用的安全适配器重写configure方法,共有三个,重写参数为http的configure方法configure(HttpSecurityhttp)方法,配置表单登陆认证方法,任何请求都需要表单认证@Overrideprotectedvoidconfigure(HttpSe......
  • springsecurity 使用浅谈(一)
    1.背景springsecurity框架主要用于Web应用的认证和授权。所谓认证就是验证当前访问系统的是不是本系统的用户,并且要确认具体是哪个用户。而授权就是经过认证后判断当前用户是否有权限进行某个操作。认证和授权也是SpringSecurity作为安全框架的核心功能。2.前置知识在......