//
#include<bits/stdc++.h>
using namespace std;
struct point
{
double x,y;
}p[25*25];
map< pair<double,double>,int >maps;
int main()
{
int cnt=0,ans=20+21,i,j;
double k,b; // double 类型
// 构造点
for( i=0;i<20;i++ )
{
for( j=0;j<21;j++ )
{
p[cnt].x=i; p[cnt].y=j; cnt++;
}
}
// 遍历两点
for( i=0;i<cnt;i++ )
{
for( j=0;j<cnt;j++ )
{
// 特殊处理 横线和竖线
if( p[i].x==p[j].x || p[i].y==p[j].y ) continue;
k=( p[i].y-p[j].y )/( p[i].x-p[j].x );
b=( p[i].x*p[j].y-p[j].x*p[i].y )/( p[i].x-p[j].x );
// b=p[i].y-k*p[i].x;
if( maps[ { k,b } ]==0 ) { maps[ { k,b } ]=1; ans++; }
}
}
printf("%d\n",ans);
return 0;
}
//
b=y-kx;
=y1-(y1-y2)/(x1-x2)*x1;
=( y1*x1-y1*x2 -y1*x1+y2*x1 )/( x1-x2 );
=( x1*y2-x2*y1 )/( x1-x2 );