【NOIP2018模拟赛 湖南师大附中day1】微小的数学

一、题目描述
这里写图片描述

二、分析

没错,数学题光靠瞪眼没用的,拿一下草稿纸你就会发现这道题居然这么简单。

加上文中的提示和平时的积累这个公式应该很好推得:

这里写图片描述+这里写图片描述+……+这里写图片描述 = 这里写图片描述

另外吐槽一下这个恶心的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;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值