QY9. 拼凑正方形
描述
牛牛有4根木棍,长度分别为a,b,c,d。羊羊家提供改变木棍长度的服务,如果牛牛支付一个硬币就可以让一根木棍的长度加一或者减一。牛牛需要用这四根木棍拼凑一个正方形出来,牛牛最少需要支付多少硬币才能让这四根木棍拼凑出正方形。输入描述
输入包括一行,四个整数a,b,c,d(1 ≤ a,b,c,d ≤ 10^6), 以空格分割输出描述
输出一个整数,表示牛牛最少需要支付的硬币示例1
输入:
4 1 5 4
输出:
4
C 解法, 执行用时: 2ms, 内存消耗: 308KB, 提交时间: 2021-09-15
#include <stdio.h> int main(){ int a[4] = {0},temp=0,sum=0; for(int i=0;i<4;i++){ scanf("%d",&a[i]); } for(int i=0;i<4;i++){ for(int j=i+1;j<4;j++){ if(a[j]<a[i]){ temp = a[j]; a[j] = a[i]; a[i] = temp; } } } a[0] = a[1]-a[0]; a[2] = a[2]-a[1]; a[3] = a[3]-a[1]; a[1] = 0; for(int i=0;i<4;i++){ sum += a[i]; } printf("%d",sum); return 0; }
C 解法, 执行用时: 2ms, 内存消耗: 352KB, 提交时间: 2019-01-13
#include <stdio.h> int main(void) { int a,b,t,c,d,sum; scanf("%d %d %d %d",&a,&b,&c,&d); if (a>b) {t=a;a=b;b=t;} if (a>c) {t=a;a=c;c=t;} if (a>d) {t=a;a=d;d=t;} if(b>c) {t=b;b=c;c=t;} if(b>d) {t=b;b=d;d=t;} if(c>d) {t=c;c=d;d=t;} sum=d-a+c-b; printf("%d",sum); return 0; }
C 解法, 执行用时: 2ms, 内存消耗: 364KB, 提交时间: 2019-08-25
#include <stdio.h> #include <math.h> int find_mid(int a, int b, int c, int d) { int t1, t2; if (a < b){ t1 = b; } else{ t1 = a; } if (c < d){ t2 = d; } else{ t2 = c; } if (t1 > t2){ return t2; } else{ return t1; } } int main(){ int a, b, c, d, mid; int coin_num = 0; if (scanf("%d %d %d %d", &a, &b, &c, &d) == 4){ mid = find_mid(a, b, c, d); coin_num += abs(a - mid); coin_num += abs(b - mid); coin_num += abs(c - mid); coin_num += abs(d - mid); printf("%d", coin_num); } return 0; }
C 解法, 执行用时: 2ms, 内存消耗: 364KB, 提交时间: 2019-05-15
#include<stdio.h> #include<math.h> //本题实质对4个数排序,取中位数 牛客:拼凑正方形 main() { int a,b,c,d,temp; int mid_number,cost; scanf("%d%d%d%d",&a,&b,&c,&d); if(a>b) { temp=a; a=b; b=temp; } if(a>c) { temp=a; a=c; c=temp; } if(b>c) { temp=b; b=c; c=temp; } if(a>d) { temp=a; a=d; d=temp; } if(b>c) { temp=b; b=c; c=temp; } if(b>d) { temp=b; b=d; d=temp; } if(c>d) { temp=c; c=d; d=temp; } mid_number=(b+c)/2; cost=abs(a-mid_number)+abs(b-mid_number)+abs(c-mid_number)+abs(d-mid_number); printf("%d",cost); }
C 解法, 执行用时: 2ms, 内存消耗: 368KB, 提交时间: 2019-04-13
#include"stdio.h" #include"math.h" int main(){ void sort(int *s); int arr[4]; for(int i=0; i<4; i++) scanf("%d",&arr[i]); sort(arr); int m = (arr[1]+arr[2])/2; printf("%d",abs(arr[0]-m)+abs(arr[1]-m)+abs(arr[2]-m)+abs(arr[3]-m)); } void sort(int*s){ int i,j; for(i=0; i<4; i++) for(j=0; j<i;j++) if(s[j]>s[j+1]){ s[j] = s[j]^s[j+1]; s[j+1] = s[j]^s[j+1]; s[j] = s[j]^s[j+1]; } }