P8152 题解
思路
我们发现每次操作都会去除右下角的 个格子,并在右下角添加 个格子。
经过 次操作后,共减少了 个格子,增加了 个格子,所以最终格子的数量是 。
提醒
一定要记得 。
还要开 __int128 或写高精度,因为答案可能会爆 unsigned long long。
代码
#include<cstdio>
__int128 n,k,ans=1;
inline __int128 read(){
__int128 s=0,w=1;
char ch=getchar();
while(ch<'0'||ch > '9'){
if(ch == '-'){
w=-1;
}
ch=getchar();
}
while(ch >= '0' && ch <= '9'){
s=s*10+ch-'0';
ch=getchar();
}
return s*w;
}
inline void write(__int128 x){
if(x<0){
putchar('-');
x=-x;
}
if(x>9){
write(x/10);
}
putchar(x%10+'0');
}
int main(){
n=read();
k=read();
ans=ans-k+n*n*k;
write(ans%998244353);
return 0;
}
更新日志
upd 2022.2.18:快写竟然写错了,改了一下。