Thứ Năm, 11 tháng 4, 2019
Nguyên lý bù trừ mở rộng
#include <bits/stdc++.h>
#define ll long long
using namespace std;
template <class T> T gcd (T a, T b) { while (b) { T r = a % b; a = b; b = r; } return a; }
template <class T> T lcm (T a, T b) { return a / gcd (a, b) * b; }
//long long sum=0;
//long long num;
ll solve(vector<long long> & v, ll n){
int N=v.size();
ll sum=0;
ll num=n;
for(int i=1;i<(1<<N);i++){
ll ct=1;
for(int k=0;k<N;k++)if( i & (1<<k) ) ct=lcm(ct,v[k]);
if(1 & __builtin_popcount(i))sum+=num/ct;
else sum-=num/ct;
}
return sum;
}
int main(){
vector<long long> v;
ll n,P,x;
/* cin>>num;
solve(v);
ll res=gcd(sum,num);
cout<<sum/res<<' '<<num/res;
return 0;*/
int t;
cin>>t;
while(t--){
cin>>n>>P;
// sum=0;
for(int i=0;i<P;i++) {cin>>x ; v.push_back(x);}
ll res=solve(v,n);
// ll res=gcd(sum,n);
cout<<res<<'\n';
v.clear();
}
}
Đăng ký:
Đăng Nhận xét (Atom)
Bài G - Educatioal Round 62
Đề bài: Bạn được cho 1 đồ thị vô hướng đặc biệt. Nó bao gồm $2n$ đỉnh được đánh số từ 1 đến 2n. Dưới đây là một số đặc tính của đồ thị: + ...
-
Link:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=3&page=show_problem&problem=98 Sol: #...
-
Link: https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=8&page=show_problem&problem=637 Sol: ...
-
MERGENUM - Ghép số Dữ liệu vào: standard input Dữ liệu ra: standard output Giới hạn thời gian: 1.0 giây Giới hạn bộ nhớ: 128 mega...
Không có nhận xét nào:
Đăng nhận xét