Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <cstdio>
- #define ll long long
- long long int ans;
- long long int gcd(long long int a, long long int b) {
- while(b)
- b ^= a ^= b ^= a %= b;
- return a;
- }
- long long int lcm(ll int a, long long int b) {
- return a*b/gcd(a,b);
- }
- long long int recurs(ll int ara[], ll i, ll j, ll num, ll numofele, ll n) {
- if (numofele == num) return 0;
- ll x, y;
- for (x = i; x <numofele; x++) {
- y = lcm(ara[x], j);
- if ((num+1) & 1) ans+=(n/y);
- else ans-=(n/y);
- recurs(ara, x+1, y, num+1, numofele, n);
- }
- }
- int main() {
- int T;
- int cs =1;
- scanf("%d", &T);
- while (T--) {
- long long int n, m, i;
- scanf("%lld %lld", &n, &m);
- long long int ara[m];
- for (i=0; i<m; i++) scanf("%lld", &ara[i]);
- ans = 0;
- recurs(ara, 0, 1, 0, m, n);
- printf("Case %d: %lld\n",cs++, n-ans);
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment