CodeForces 560C Gerald's Hexagon

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);
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值