codeforces#687 B. Remainders Game
Posted carcar
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了codeforces#687 B. Remainders Game相关的知识,希望对你有一定的参考价值。
题意:给出n个数,和一个数p,问你在知道 x%ai 的情况下,能不能确定x%p的值
结论:当n个数的最小公倍数是p的倍数时,可以确定
代码:
#include <bits/stdc++.h> #define ll long long using namespace std; const int maxn=1e6+10; vector<int>ve; int n,p; int main() { scanf("%d %d",&n,&p); for(int i=2; i*i<=p; i++) { if(p%i==0) { ll res=i; while(p%(res*i)==0&&p>=(res*i)) res*=i; p/=res; ve.push_back(res); } } if(p!=1)ve.push_back(p); for(int i=1; i<=n; i++) { int x; scanf("%d",&x); for(int i=0; i<ve.size(); i++) { if(ve[i]==0)continue; if(x%ve[i]==0)ve[i]=0; } } for(int i=0; i<ve.size(); i++) if(ve[i]!=0) { cout<<"No"<<endl; return 0; } cout<<"Yes"<<endl; return 0; }
以上是关于codeforces#687 B. Remainders Game的主要内容,如果未能解决你的问题,请参考以下文章
CodeForces - 687C The Values You Can Make (多背包解法)
Codeforce 687A. NP-Hard Problem
CodeForces 687B Remainders Game
CodeForces - 687D: Dividing Kingdom II (二分图&带权并查集)