大家好像都是这里出错了
查看原帖
大家好像都是这里出错了
991896
KoishiJiji楼主2023/8/27 15:15
#include<iostream>
#include<bits/stdc++.h>
using namespace std;
#define ll long long
const int mod=998244353;
int main()
{
    ll a,b,k;
    cin>>a>>b>>k;
    ll ans=1;
    for(int i=1;i<=k;i++){
        if(i%a==0)
            ans=(ans%mod*2%mod)%mod;
        if(i%b==0 && ans==1)
            continue;
        else if(i%b==0 && ans%2==0)
            ans=ans/2%mod;
        else if(i%b==0 && ans%2==1)
            //ans=(ll)ceil((ans+1)/2.0)%mod; //我一开始是这样写的
            ans=(ans*499122177)%mod;
    }
    cout<<ans%mod<<endl;
    return 0;
}

还是不太懂 为什么奇数时除2要按照提示那样写, 我这样写哪里有问题 (ll)ceil((ans+1)/2.0)%mod;

2023/8/27 15:15
加载中...