列表

详情


NC213746. 魔界伊始

描述

神崎作为魔界之神,造人的方法是用沙子捏成人形,然后用魔法赋予其意识。
神崎有一台天平以及个砝码,另外她还有很多个同样重的烧杯和无穷多的沙子。平日她通过这些来称量出准确重量的沙子。
她想知道能否利用这些砝码称出重量为的沙子?
一共有次询问。
注:烧杯的数量可以视为无穷多个。烧杯的重量是未知的,但大小可以视为无穷大,即可以装任意多的沙子。烧杯中也可以放砝码。

输入描述

第一行一个正整数
第二行有个正整数,代表砝码的重量。
接下来的一行有一个正整数
接下来的行,每一行有一个正整数,分别代表一次询问。
数据范围:

输出描述

输出行。如果能撑出重量为的沙子,则输出"Yes"。否则输出"No"(不包含引号)。 

示例1

输入:

2
6 20
2
8
7

输出:

Yes
No

说明:

想要称出重量为8的沙子,可以先用两个砝码称出重量14的沙子,然后用这些沙子和一个重量6的砝码称出重量8的沙子。
但是无论如何,显然都不能称出重量7的沙子。

原站题解

上次编辑到这里,代码来自缓存 点击恢复默认模板

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

上一题