如下,代码十分简洁明了。
#include<bits/stdc++.h>
using namespace std;
using ui=unsigned int;
int main(void){
ios::sync_with_stdio(false),cin.tie(nullptr),cout.tie(nullptr);
size_t n;size_t m;
cin>>n>>m;
vector<bool> arr(n),vis(n);
while (m--){
size_t a;
cin>>a;
a=__gcd(a,n);
if (vis[a]){
cout<<"0 ";
continue;
}
vis[a]=true;
size_t cnt=0;
for (size_t i=0;i<n;i+=a) if (!arr[i]) cnt++,arr[i]=true;
cout<<cnt<<' ';
}
return 0;
}
其在什么时候时间复杂度最高?是多少?为什么?