一、题目描述
二、分析
没错,数学题光靠瞪眼没用的,拿一下草稿纸你就会发现这道题居然这么简单。
加上文中的提示和平时的积累这个公式应该很好推得:
++……+ =
另外吐槽一下这个恶心的markdown太难弄公式了。
这里带进去公式不难推得最终结论 : ans = ( 2s+nd) *
那就很简单了。
这里还有一个易错点:由于数太大,注意每一步都要mod(是每一步!)
三、 代码
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<algorithm>
#include<cmath>
#include<cstring>
#include<vector>
using namespace std;
const int Mod = 998244353;
long long temp1,temp2;
long long ans=1;
long long a,b;
long long fine;
long long n,s,d;
int main()
{
// freopen("problem.in","r",stdin);
// freopen("problem.out","w",stdout);
cin>>n>>s>>d;
s=s%Mod;
d=d%Mod;
temp2=2*s%Mod+((n%Mod)*(d%Mod))%Mod;
temp2=temp2%Mod;
a=2;
b=n-1;
while(b)
{
if(b&1)
{
ans = ans * a % Mod;
}
a = a * a % Mod;
b>>=1;
}
ans=ans%Mod;
fine=ans%Mod*temp2%Mod;
cout<<fine;
return 0;
}