zoukankan      html  css  js  c++  java
  • 牛客寒假算法基础集训营5 J 炫酷数学

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

    小希最近想知道一个东西,就是A+B=A|B(其中|为按位或)的二元组有多少个。

    当然,直接做这个式子对小希来说太难了,所以小希改变了一些条件,她仅想知道其中A,B<N的情况,其中N为2的幂次。


    当然,(A=1,B=0)和(A=0,B=1)被认为是不同的二元组。
     
    对于这种问题一点都不懂。。。。。
    法1:打表找规律  3^m
    法2:二进制分析,每一位只有00, 01,10 这3种情况 
    举例    1+2 == 1|2   
    1:  0001
    2:  0010
         0011 == 3
     
    除了那3种还有 11 但是11会进位 肯定不等
    每一位3种情况 共m位  因为n=2^m
    所以答案为 3^m
     
     1 #include<stdio.h>
     2 #include<math.h>
     3 typedef long long ll;
     4 const int mod=998244353;
     5 
     6 ll m_pow(ll a,ll b) {
     7     ll tmp=a%mod;
     8     ll sum=1;
     9     while(b) {
    10         if(b&1) sum=(sum*tmp)%mod;
    11         tmp=tmp*tmp%mod;
    12         b>>=1;
    13     }
    14     return sum;
    15 }
    16 
    17 int main() {
    18     int m;
    19     scanf("%d",&m);
    20     printf("%lld",m_pow(3,m));
    21     return 0;
    22 }

     

  • 相关阅读:
    CF263E Rhombus
    AtCoder Grand Contest 034
    Docker C/S 架构逻辑图
    使用filledeat modules配置
    filebeat分别收集多个类型日志
    ELK部署收集日志
    ES界面
    Django下的post请求访问出现403错误
    Django配置(urls.py)
    Day-1 python
  • 原文地址:https://www.cnblogs.com/ACMerszl/p/10346462.html
Copyright © 2011-2022 走看看