CodeForces 216A Tiling with Hexagons
阿新 • • 發佈:2019-02-04
已知大六邊形的三邊a,b,c。它的六條邊邊長分別是a,b,c,a,b,c。
問其中能擺多少個小六邊形。
誒,居然就是把它分塊,看成規則的平行四邊形,然後加加減減。
最後推出公式:
res=ab+bc+ca-a-b-c+1
比賽的時候實在是WA到不行,也不知道自己想的方向對不對,也可以說
自己不清楚這種題大致思考的方向在哪。。規律該怎麼找。
所以就只好一排排的加,最後得出結果。
據說還有思考方式不同得出的等價公式:res = abc - (a - 1)(b - 1)(c - 1)。但是不知道是abc和(a-1)(b-1)(c-1)
分別表示什麼。。。誒。。。
比賽的時候的AC程式碼:
#include<iostream> #include<cstdio> #include<cstring> #include<string> #include<cctype> #include<cstdlib> #include<algorithm> #include<cmath> #include<queue> #include<stack> #include<vector> #define INF 0x3f3f3f3f using namespace std; int main() { int a,b,c,ans,x; while(scanf("%d%d%d",&a,&b,&c)!=EOF) { ans=0,x=a-1; for(int i=1;i<=b;i++) { if(i<=c) x++; ans+=x; } x=a-1; for(int i=1;i<c;i++) { if(i<=b) x++; ans+=x; } printf("%d\n",ans); } return 0; }
用公式:
#include<cstdio>
#include<iostream>
using namespace std;
int main()
{
int a,b,c;
while(scanf("%d%d%d",&a,&b,&c)!=EOF)
{
int ans=a*b+b*c+c*a-a-b-c+1;
printf("%d\n",ans);
}
return 0;
}