NC21674. 牛牛与LCM
描述
输入描述
第一行输入一个整数n (1 ≤ n ≤ 50)
第二行输入n个整数ai (1 ≤ ai ≤ 109)
第三行输入一个整数x (2 ≤ x ≤ 109)
输出描述
如果可以,输出"Possible"
否则输出"Impossible"
示例1
输入:
4 2 3 4 5 20
输出:
Possible
示例2
输入:
3 2 3 4 611
输出:
Impossible
示例3
输入:
3 2 3 4 12
输出:
Possible
示例4
输入:
10 1 2 3 4 5 6 7 8 9 10 24
输出:
Possible
C++(g++ 7.5.0) 解法, 执行用时: 4ms, 内存消耗: 528K, 提交时间: 2023-06-10 14:19:34
#include<bits/stdc++.h> using namespace std; typedef long long ll; ll a[60]; int main() { int n; cin>>n; ll res=1; for(int i=1;i<=n;++i)cin>>a[i]; int x; cin>>x; for(int i=1;i<=n;++i) { if(x%a[i]==0)res=res*a[i]/__gcd(res,a[i]); } if(res==x)cout<<"Possible"<<'\n'; else cout<<"Impossible"<<'\n'; }
C++14(g++5.4) 解法, 执行用时: 4ms, 内存消耗: 504K, 提交时间: 2019-07-24 02:08:31
#include<bits/stdc++.h> using namespace std; typedef long long ll; ll a[100]; ll n; int main() { cin>>n; ll i; for(i=1;i<=n;i++)cin>>a[i]; ll x; cin>>x; ll lc=1; for(i=1;i<=n;i++) { if(x%a[i]==0)lc=lc/__gcd(lc,a[i])*a[i]; } if(lc%x==0)printf("Possible\n"); else printf("Impossible\n"); }
C++(clang++ 11.0.1) 解法, 执行用时: 3ms, 内存消耗: 480K, 提交时间: 2022-08-13 08:39:57
#include<bits/stdc++.h> using namespace std; int main (){ int n; cin>>n; int a[n+1]; for(int i=1;i<=n;i++)cin>>a[i]; int x; cin>>x; int p=1; for(int i=1;i<=n;i++){ if(x%a[i]==0)p=p/__gcd(p,a[i])*a[i]; } if(p%x==0)cout<<"Possible"; else cout<<"Impossible"; return 0; }
Python3(3.5.2) 解法, 执行用时: 35ms, 内存消耗: 3580K, 提交时间: 2019-07-21 22:05:20
def lcm(x,y): def gcd(a,b): return a if b==0 else gcd(b,a%b) return x*y/gcd(x,y) n=int(input()) a= [int (e) for e in input().split()] x=int(input()) ans=1 for i in a : if(x%i==0): ans=lcm(ans,i) print('Possible' if ans==x else 'Impossible')