NC213746. 魔界伊始
描述
输入描述
第一行一个正整数。第二行有个正整数,代表砝码的重量。接下来的一行有一个正整数。接下来的行,每一行有一个正整数,分别代表一次询问。数据范围:
输出描述
输出行。如果能撑出重量为的沙子,则输出"Yes"。否则输出"No"(不包含引号)。
示例1
输入:
2 6 20 2 8 7
输出:
Yes No
说明:
想要称出重量为8的沙子,可以先用两个砝码称出重量14的沙子,然后用这些沙子和一个重量6的砝码称出重量8的沙子。C++(g++ 7.5.0) 解法, 执行用时: 233ms, 内存消耗: 784K, 提交时间: 2022-11-13 19:35:35
#include <bits/stdc++.h> using namespace std; int main() { int n; long long q, a; cin >> n; cin >> q; for (int i = 2; i <= n; i ++ ) scanf("%lld", &a), q = __gcd(q, a); cin >> n; while (n -- ) { cin >> a; if (a % q == 0) puts("Yes"); else puts("No"); } }
C++(clang++11) 解法, 执行用时: 46ms, 内存消耗: 632K, 提交时间: 2020-11-21 12:35:19
#include<bits/stdc++.h> #define ll long long using namespace std; int n,q; ll a,x,ans=0; int main(){ scanf("%d",&n); while(n--){ scanf("%lld",&a); ans=__gcd(ans,a); } scanf("%d",&q); while(q--){ scanf("%lld",&x); if(x%ans) puts("No"); else puts("Yes"); } }
Python3(3.9) 解法, 执行用时: 473ms, 内存消耗: 20140K, 提交时间: 2021-02-22 15:25:25
import math n=int(input()) l=list(set(map(int,input().split()))) t=l[0] for i in l: t=math.gcd(t,i) q=int(input()) while q: qq=int(input()) print("No" if qq%t else "Yes") q-=1