NC24322. 妖怪大乱斗
描述
求内斗完后的妖王hp值最低可能是多少。
输入描述
第一行一个n(1≤n≤105),表示妖怪个数。第二行每行n个数,第i个数ai表示第i只妖怪的hp值(1≤ai≤109)
输出描述
一个数,表示妖王最低的hp值。
示例1
输入:
3 3 1 2
输出:
1
说明:
第二只妖怪攻击其他所有妖怪,其他所有妖怪都不攻击,最后只有第二只存活。示例2
输入:
2 4 6
输出:
2
说明:
4攻击6,变成4 2;C(clang 3.9) 解法, 执行用时: 47ms, 内存消耗: 752K, 提交时间: 2019-04-13 14:31:18
#include<stdio.h> int main(){ int N,n[100000],i,j,flag=0; scanf("%d",&N); for(i=0;i<N;i++)scanf("%d",n+i); for(;;){ for(i=0;i<N;i++){ if(n[i]>0){ for(j=0;j<N;j++){ if(n[j]>=n[i]&&j!=i){ n[j]-=n[i]; flag=1; } } } } if(flag==0)break; flag=0; } for(i=0;i<N;i++){ if(n[i]>0)printf("%d",n[i]); } }
C++14(g++5.4) 解法, 执行用时: 30ms, 内存消耗: 876K, 提交时间: 2019-07-17 17:34:53
#include<bits/stdc++.h> using namespace std; int a[100005]; int main() { int t; scanf("%d",&t); for(int i=0;i<t;i++) { scanf("%d",&a[i]); } int gccd=a[0]; for(int i=1;i<t;i++) { gccd=__gcd(gccd,a[i]); } cout<<gccd<<endl; }
C++(clang++11) 解法, 执行用时: 19ms, 内存消耗: 784K, 提交时间: 2021-03-13 22:17:35
#include<bits/stdc++.h> using namespace std; const int maxn = 1e5+10; int a[100050]; int main() { int n; scanf("%d",&n); for(int i=1;i<=n;i++) scanf("%d",&a[i]); int gcd = a[1]; for(int i=2;i<=n;i++) gcd = __gcd(gcd,a[i]); printf("%d\n",gcd); }