您的位置:首页 > 编程语言 > Go语言

CodeForces 560C Gerald's Hexagon

2016-07-23 16:05 411 查看

CodeForces 560C

题意:给出六边形的6个边长,求其中有多少个1×1×1的小正三角形。

解题思路:最简单做法是把它补成大的三角形,然后减去三个小三角形。

我是把它分解成上中下三个部分,上下为梯形,个数为 (上底+下底)×侧长 ,若梯形的左右长度不同时还会有中间部分,个数为 下底×左右侧长度差×2。

/*************************************************************************
> File Name: 0722c.cpp
> Author: Narsh
>
> Created Time: 2016年07月22日 星期五 18时53分28秒
************************************************************************/

#include <iostream>
#include <algorithm>
#include <cstdio>
#include <cstring>
using namespace std;
int a[9];
int min(int x,int y) {
if (x<y) return x;
return y;
}
int main() {
for (int i = 1; i <= 6; i++)
scanf("%d",&a[i]);
int s=0;
int d=a[1]-a[3],u=min(a[1],a[3]);
if (d < 0) d=-d;
s+=(a[2]*2+u)*u;
u=min(a[4],a[6]);
s+=(a[5]*2+u)*u;
s+=(a[5]+u)*d*2;
printf("%d\n",s);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: