HJ93. 数组分组
描述
输入描述
第一行是数据个数,第二行是输入的数据
输出描述
返回true或者false
示例1
输入:
4 1 5 -5 1
输出:
true
说明:
第一组:5 -5 1 第二组:1示例2
输入:
3 3 5 8
输出:
false
说明:
由于3和5不能放在同一组,所以不存在一种分法。C 解法, 执行用时: 1ms, 内存消耗: 364KB, 提交时间: 2020-08-03
#include<stdio.h> #include<math.h> int main() { int num; while(scanf("%d",&num) != EOF) { int a[100]; int i; for(i=0;i<num;i++) { scanf("%d",&a[i]); } int sum1 = 0; int sum2 = 0; int sum3 = 0; for(i=0;i<num;i++) { if(a[i] > 0 && a[i] % 5 == 0) { sum1 += a[i]; } else if(a[i] > 0 && a[i] % 3 == 0) { sum2 += a[i]; } else { sum3 += abs(a[i]); } } if(sum3 > abs(sum1-sum2) && (sum3-abs(sum1-sum2)) % 2 == 0) { printf("true\n"); } else { printf("false\n"); } } }
C 解法, 执行用时: 1ms, 内存消耗: 364KB, 提交时间: 2020-07-19
#include<stdio.h> #include<math.h> int main(){ int n; while(scanf("%d",&n)!=EOF){ int a[100]; int b[100]; int sum1=0; int sum2=0; int sum3=0; int ii=0; for (int i=0;i<n;i++){ scanf("%d",&a[i]); if (a[i]>0&&a[i]%5==0){ sum1=sum1+a[i]; } else if(a[i]>0&&a[i]%3==0){ sum2=sum2+a[i]; } else { b[ii]==a[i]; sum3=sum3+abs(a[i]); ii++; } } /*printf("%d\n",sum1); printf("%d\n",sum2); printf("%d\n",sum3);*/ if(sum3>abs(sum2-sum1)&&(sum3-abs(sum2-sum1))%2==0){ printf("true"); printf("\n"); } else{ printf("false"); printf("\n"); } } }