zoukankan      html  css  js  c++  java
  • E

    Time Limit: 2 sec / Memory Limit: 1024 MB

    Score : 500500 points

    Problem Statement

    You are given a positive integer LL in base two. How many pairs of non-negative integers (a,b)(a,b) satisfy the following conditions?

    • a+b≤La+b≤L
    • a+b=a XOR ba+b=a XOR b

    Since there can be extremely many such pairs, print the count modulo 109+7109+7.

    What is XOR?

    Constraints

    • LL is given in base two, without leading zeros.
    • 1≤L<2100 0011≤L<2100 001

    Input

    Input is given from Standard Input in the following format:

    LL
    

    Output

    Print the number of pairs (a,b)(a,b) that satisfy the conditions, modulo 109+7109+7.


    Sample Input 1 Copy

    Copy

    10
    

    Sample Output 1 Copy

    Copy

    5
    

    Five pairs (a,b)(a,b) satisfy the conditions: (0,0),(0,1),(1,0),(0,2)(0,0),(0,1),(1,0),(0,2) and (2,0)(2,0).


    Sample Input 2 Copy

    Copy

    1111111111111111111
    

    Sample Output 2 Copy

    Copy

    162261460

    类似数位dp的dp方法

    dp[i][1]代表第i为被限制时的方法数

    dp[I][0]代表第i未被限制时的方法数

    被限制的话对于下一位我们是不能任意取的

    而不被限制我们则可以根据上一个不被限制的方法*3推得

    我们考虑几种转移情况

    i为1时 可以由限制转移到非限制 而对于限制到限制则可*2推出

    代码

    #include<bits/stdc++.h>
    using namespace std;
    const long long mod=1000000007;
    long long dp[100005][2];
    int main()
    {
        char s[100005];
        cin>>s+1;
        dp[0][1]=1;
        dp[0][0]=0;
        int n=strlen(s+1);
        for(int i=1;s[i];i++)
        {
            dp[i][0]=(dp[i-1][0]*3)%mod;
            if(s[i]=='1')
            {
                dp[i][1]=(dp[i-1][1]*2)%mod;
                dp[i][0]+=dp[i-1][1];
                dp[i][0]=(dp[i][0])%mod;
            }
            else
            {
                dp[i][1]=dp[i-1][1];
            }
        }
        printf("%lld
    ",(dp[n][1]+dp[n][0])%mod);
    }
  • 相关阅读:
    Java 线程安全与锁优化
    Linux内常用的BASH命令
    Java导出CSV用MS Office Excel打开乱码问题一招制胜办法
    素数个数求解与素数的判定
    Java 线程间的通信wait(), notify(), join(), ThreadLocal讲解
    Java volatile关键字特性介绍
    项目架构相关
    HTTP POST 请求 及 @RequestParam @RequestPart @RequestBody
    Web安全相关
    Thread和Runable比较
  • 原文地址:https://www.cnblogs.com/caowenbo/p/11852252.html
Copyright © 2011-2022 走看看