zoukankan      html  css  js  c++  java
  • 牛客练习赛32 Phrase String(签到题)

    链接:https://ac.nowcoder.com/acm/contest/272/A
    来源:牛客网
     

    题解:wa了一发,a*=2的时候忘了mod

    一种情况是k<v:

    把二进制放一个数组里,按照最优处理数组信息(初始化全为0,跟题上的二级制显示恰好相反,从数组下标1开始,对称更改数组元素为1,这样能使n最小),完了二级制转换成十进制。

    另一种是 k>=v:

    数组全是1,直接二进制转换十进制即可。

    具体看代码,qwq

    ac代码

    #include <iostream>
    #include <bits/stdc++.h>
    using namespace std;
    typedef long long ll;
    ll mod=1e9+7;
    const ll maxn=1e5+5;
    ll s[maxn];
    int main(){
        ll v,k;
        cin>>v>>k;
        if(k>=v){
            ll ans=0;
            ll a=1;
            while(k--){
                ans+=a;
                ans%=mod;
                a=a*2%mod;
            }
            cout<<ans<<endl;
        }
        else{
            ll ans=0;
            ll temp=v-k;
            ll cnt=temp/2;
            ll i=1;
            ll tp=v;
            while(cnt--){
                s[i]=1;
                s[tp-1-i]=1;
                i++;
            }
            ll a=1;
            for(ll i=v-1;i>=0;i--){
                if(!s[i]){
                    ans+=a;
                    ans%=mod;
                }
                a=a*2%mod;
    
            }
            cout<<ans<<endl;
        }
        return 0;
    }
    

    题目描述

    给出v, k,请你找到最小的正整数n,满足:
    n的二进制表示下存在一个长度为v的回文串,该回文串首尾都是1且n的二进制表示中至少有k个1。保证v,k均为偶数!
    由于n可能很大,你只需要输出对取模的结果。

    输入描述:

    两个整数v, k。保证v,k均为偶数!

    输出描述:

    一个整数,表示n对取模的结果。

    示例1

    输入

    复制

    6 4

    输出

    复制

    45

    说明

    样例的构造方法为:101101

    示例2

    输入

    复制

    2 4

    输出

    复制

    15

    说明

    最优的构造方法为:1111

    备注:

  • 相关阅读:
    05-浮动/css
    04-选择器/css
    03-样式表/css
    02-html标签&表格&表单
    01-html基础&标签
    vue分页组件重置到首页问题
    VUE通过索引值获取数据不渲染的问题
    常见IE8兼容性问题及解决
    Ajax
    sea.js模块化工具
  • 原文地址:https://www.cnblogs.com/UUUUh/p/10284053.html
Copyright © 2011-2022 走看看