1. 程式人生 > >牛客寒假算法基礎集訓營5 J 炫酷數學

牛客寒假算法基礎集訓營5 J 炫酷數學

ati main urn posit eight 牛客網 clas mod margin

鏈接: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 }

牛客寒假算法基礎集訓營5 J 炫酷數學