计数器-裴蜀定理
作者:互联网
https://ac.nowcoder.com/acm/problem/17873
大意:计算器最初值是w=0,每次从数组a中任一个或0个数加入w,w%m后,问能产生多少个不同的数。
思路:
并且w要小于m,所以由裴蜀定理有解满足c/gcd(a,b) == 0可知,w要是gcd(a1,a2,...,an,m)的倍数,且小于m。
所以答案是m/gcd(a1,a2,...,an,m).
#include <bits/stdc++.h>
#define ll long long
const int N = 1e6+7;
const int mod = 1e9+7;
const ll ds = 1e15;
const double eps = 1e-8;
using namespace std;
int a[N];
void solve(){
int n,m,g,x;
cin >> n >> m;
for(int i = 1; i <= n; i++){
cin >> x;
g = __gcd(g,x);
}
cout << m/g << endl;
}
int main(){
// int t;
// cin >> t;
// while(t--)
solve();
//system("pause");
return 0;
}
标签:const,gcd,int,定理,long,计数器,solve,ll,裴蜀 来源: https://blog.csdn.net/qq_46653910/article/details/116352456