zoukankan      html  css  js  c++  java
  • 找规律

    题目

    You are given a positive integer N(1≦N≦1e18). Find the number of the pairs of integers u and v(0≦u,v≦N) such that there exist two non-negative integers a and b satisfying a xor b=u and a+b=v. Here, xor denotes the bitwise exclusive OR. Since it can be extremely large, compute the answer modulo 1e9+7.

    Input

    The input is given from Standard Input in the following format:N

    Output

    u,v 对的数量 模1e9+7

    Sample Input 1

    3

    Sample Output 1

    5

    Sample Input 2

    1422

    Sample Output 2

    52277

    Sample Input 3

    1000000000000000000

    Sample Output 3

    787014179

    题意

    给出正整数N,求出整数对u和v(0≤u,v≤N)的数目,使得存在两个非负整数a和b满足a xo rb=u 和a+b=v。这里,xor表示按位异或。对答案取模1e9+7

    分析

    这个题就是找规律,然后递归找答案,当然,递归是需要记忆化搜索的,不然可能会爆掉。如果写递推也是可以的(当然我写的递归);

    代码

    #include<bits/stdc++.h>
    using namespace std;
    #define ll long long
    const int Mod = 1e9+7;
    map<ll, ll>ans;
    ll f(ll x){
        if (ans[x])return ans[x] % Mod;
        return ans[x]=(f(x/2)+f((x-1)/2)+f((x-2)/2))%Mod;
    }
    int main(){
        ll n;
        scanf("%lld",&n);
        ans[0] = 1;
        ans[1] = 2;
        printf("%lld
    ", f(n) % Mod);
    }

    PS:感谢zhl大佬提供的查找公式的网站。

  • 相关阅读:
    vue中插槽的使用场景
    css实现文字两端对齐
    es6 every的使用
    es6 filter方法应用
    es6 map的用法
    spring-servlet.xml
    Spring MVC过滤器HiddenHttpMethodFilter
    controller大全(推荐)
    目前接触到的UI
    jdk环境配置(windows版)
  • 原文地址:https://www.cnblogs.com/Vocanda/p/12868176.html
Copyright © 2011-2022 走看看