版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/sunshiness_s/article/details/81335683
LOJ #525. 「LibreOJ β Round #4」多项式
题意
给定一个正整数 ,你需要寻找一个系数均为 到 之间的非零多项式 ,满足对于任意整数 均有
题解
我们知道欧拉定理是:若 a 与 n 互质,则
这里我们提出扩展欧拉定理:任意正整数 ,都有
所以我们可以得到
我们可用令 就可以得到一个正确式子
然而题目要求系数不能为负数
所以我们给式子加上一个
也就可以得到
然后求一个 就可以了
代码
#include <cstdio>
int k;
int gcd(int x,int y){
if(!y) return x;
return gcd(y,x%y);
}
int main(){
scanf("%d",&k);
if(k==1){puts("-1");return 0;}
int phi=1;
for(int i=2;i<k;i++) if(gcd(i,k)==1) phi++;
printf("%d\n",phi<<1);
for(int i=0;i<phi;i++) printf("0 ");
printf("%d ",k-1);
for(int i=phi+1;i<(phi<<1);i++) printf("0 ");
printf("1");
return 0;
}