码迷,mamicode.com
首页 > 其他好文 > 详细

求和 |数学

时间:2020-01-03 15:39:12      阅读:122      评论:0      收藏:0      [点我收藏+]

标签:str   sign   lowbit   bit   int   sig   owb   iostream   兴趣   

小a学习了树状数组之后,对 lowbit 很感兴趣,于是出了一道题。
给定非负整数n。记lowbit(x)为x的二进制表示下最低位的1所对应的值,如,某个数x最低位的1分别在第1,2,3位时,lowbit(x)\text{lowbit}(x)lowbit(x)分别是1,2,4。求 ∑i= 02nlowbit(i)\sum_{i=0}^{2^n} 输出答案对998244353取模后的结果。T组数据。


#include<cstdio>
#include<iostream>
#include<algorithm>
using namespace std;
const int mod=998244353;
#define int long long
inline int ksm(int x,int y){
    int ans=1ll;
    while(y){
        if(y&1)ans=ans*x%mod; 
        x=x*x%mod;
        y>>=1;
    }
    return ans;
}
inline int read(){
    int x=0; char c=getchar(); 
    while(c<'0'||c>'9')c=getchar();
    while('0'<=c&&c<='9'){ x=(x<<3)+(x<<1)+(c^48); c=getchar();  }
    return x;
}
signed main(){  
    int T=read(),n; 
    while(T--){
        n=read();
        if(n==0)printf("1\n");
        else
        printf("%lld\n",ksm(2ll,n-1)*((n+2ll)%mod)%mod);
    }
}

求和 |数学

标签:str   sign   lowbit   bit   int   sig   owb   iostream   兴趣   

原文地址:https://www.cnblogs.com/naruto-mzx/p/12145156.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!