NC24639. 简单计数
描述
输入描述
第一行两个整数 n,k
输出描述
一行一个整数表示答案对 998244353 取模后的结果
示例1
输入:
1 1
输出:
0
C++14(g++5.4) 解法, 执行用时: 6ms, 内存消耗: 488K, 提交时间: 2019-05-29 19:55:18
#include <bits/stdc++.h> using namespace std; #define ll long long ll p=998244353; ll qw(ll x, ll y, ll p){ int re=1%p; for(;y;y/=2){ if(y%2==1){ re=re*x%p; } x=x*x%p; } return re; } ll n,k; int main(){ cin>>n>>k; ll o=1; if(k%2==1){ o=-1; }else{ o=1; } ll cnt=((o*(n-1)+qw(n-1,k,p)+p)%p*qw(n,p-2,p))%p; cout<<cnt<<endl; }
C++11(clang++ 3.9) 解法, 执行用时: 4ms, 内存消耗: 376K, 提交时间: 2020-01-17 10:33:41
#include<bits/stdc++.h> using namespace std; long long i,j,n,k,mod=998244353; int fastpow(long long a,long long b) { long long s=1; for(;b;b>>=1,a=a*a%mod)if(b&1)s=s*a%mod; return s; } int main() { scanf("%lld%lld",&n,&k); i=(fastpow(n-1,k)-(1-n)*(k&1?-1:1)+mod)%mod,j=fastpow(n,mod-2); printf("%lld\n",i*j%mod); return 0; }