#690. LG2024TG-17
LG2024TG-17
- (阅读程序)
#include <bits/stdc++.h>
using namespace std;
constexpr int mod=998244353;
int n,k,a[12],b[12],ans[12],fa[12];
int findfa(int u){return u==fa[u]?u:fa[u]==findfa(fa[u]);}
int functionUnknown(int a[],int n){
if(n<=1) return 0;
int i=n-1,j,k;
while(true){
j=i;
--i;
if(a[i]<a[j]){
for(k=n;a[i]>=a[--k];);
swap(a[i],a[k]);
reverse(a+j,a+n);
return 1;
}
if(!i){
reverse(a,a+n);
return 0;
}
}
return -1;
}
int F(int x){
int ans=0;
for(int i=k-1;~i;--i)
ans=(1ll*ans*x%mod+a[i])%mod;
return ans;
}
int main(){
scanf("%d %d",&n,&k);
for(int i=0;i<k;++i) scanf("%d",a+i);
for(int m=1;m<=n;++m){
for(int i=0;i<m;++i) b[i]=i; //第34行
do{
for(int i=0;u,v;i<m;++i){
u=findfa(i); v=findfa(b[i]);
if(u==v) continue;
--res;
fa[u]=v;
}
int flag=0;
for(int i=0;i<m;++i)
if(b[i]==i) flag=1;
if(flag) continue;
ans[m]=(ans[m]+F(res))%mod;
}while(functionUnknown(b,m));
printf("%d%c",ans[m],"\n"[m==n]);
}
return 0;
}
假设输入的 n,k 是不超过 10 的正整数,输入的 a[i] 是不超过 的正整数,完成下面的 判断题和单选题。
(判断题)
functionUnknown 函数的返回值不可能为 -1。( )
{{ select(1) }}
- 对
- 错
当输入的 k=1 时,输出的数值均能表示为 的形式,其中 t 是一个整数。( )
{{ select(2) }}
- 对
- 错
如果把第 34 行整行改为 b[m-1]=m-1,则程序输出将会被改变。( )
{{ select(3) }}
- 对
- 错
(选择题)
在主函数中,findfa 函数被调用的次数与以下哪个选项同阶( )
{{ select(4) }}
对于以下的输入数据,输出结果为( )
5 5
1 2 3 4 5
{{ select(5) }}
- 0 15 30 261 1500
- 0 12 24 297 1788
- 0 15 30 477 2940
- 0 15 30 864 5520
functionUnknown 的功能接近于 C++ STL 库中的以下( )函数。
{{ select(6) }}
- next_permutation
- prev_permutation
- is_sorted
- is_permutation