NC236626. 减法和求余
描述
输入描述
第一行给出一个正整数,表示数字的数量。
接下来给出个数字,其中第
个数字记作
输出描述
输出一行一个整数表示答案。
示例1
输入:
5 1 3 0 12 10
输出:
2
说明:
选择x=3,先将所有数字对 3 求余,此时数组变为 [1,0,0,0,1],再选择第一个数字和第五个数字减一,共两次操作可以使得所有数字全部变为 0。示例2
输入:
6 5 20 100 15 5 0
输出:
1
C++(g++ 7.5.0) 解法, 执行用时: 49ms, 内存消耗: 448K, 提交时间: 2023-07-11 14:35:02
#include<iostream> #include<algorithm> using namespace std; int n,a; int main() { cin>>n; int st0=0,st1=0,gcd=0; for(int i=0;i<n;i++){ cin>>a; gcd=__gcd(a,gcd); if(a==0) st0++; if(a==1) st1++; } if(gcd==0) cout<<0; else if(st1+st0==n||gcd>1) cout<<1; else cout<<2; }
C++ 解法, 执行用时: 22ms, 内存消耗: 424K, 提交时间: 2022-05-23 21:32:22
#include <bits/stdc++.h> using namespace std; int main() { int n,a,gcd=0,pd0=0,pd1=1; cin>>n; for(int i=1;i<=n;i++){ scanf("%d",&a); gcd=__gcd(gcd, a); if(a>1)pd1=0; if(a==0)pd0++; } if(pd0==n)cout<<0; else if(pd1 || gcd>=2)cout<<1; else cout<<2; }
pypy3 解法, 执行用时: 168ms, 内存消耗: 32552K, 提交时间: 2023-07-11 00:58:41
from math import gcd int(input()) a = list(map(int, input().split())) x = a[0] for num in a: x = gcd(x, num) if max(a) == 0: print(0) elif x != 1 or max(a) == 1: print(1) else: print(2)