Codeforces Beta Round #1 补题题解

A Theatre Square(数学)

算出每行能装多少乘以每列能装多少就行

公式

ans=ceil(n/a)+ceil(m/a)

代码

#include <bits/stdc++.h>
using namespace std;
int main()
{
  ios::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);
  long long n,m,a;
  cin>>n>>m>>a;
  cout<<(n/a+(n%a!=0))*(m/a+(m%a!=0));
}

B Spreadsheets(字符串模拟)

先得看出这是一个26进制的转换然后会发现一个问题,这个26进制从1开始到26跟一般的从0-25是有区别的

解决的办法是转换的时候统一用m-1替换m但是条件还是判断m是不是等于0

sscanf真心好用啊

代码

#include <bits/stdc++.h>
char s[666666],ss[666666];
void print(int x)
{
  if(!x)
  return;
  print((x-1)/26);
  putchar('A'+(x-1)%26);
}
int main()
{
  int t,n,m;
  scanf("%d",&t);
  while(t--)
  {
    double sum=0;
    scanf("%s",s);
    if(sscanf(s,"R%dC%d",&n,&m)==2)
    print(m),printf("%d\n",n);
    else
    {
      sscanf(s,"%[A-Z]%d",ss,&n);
      int len=strlen(ss);
      for(int i=0;i<len;i++)
      sum+=(ss[i]-'A'+1)*pow(26,len-i-1);
      printf("R%dC%.0f\n",n,sum);
    }
  }
}

C Ancient Berland Circus(数学)

完全的高考题,可以出在高考第一个数学大题,三角函数上

给定平面内的三个点,计算由这三个点构成的正多边形的面积

首先计算出外接圆

外接圆的公式是abc/4s

abc是三个点组成的三条线段的长度

s是三角形的面积

s可以用海伦公式求

s=sqrt(p(p-a)(p-b)(p-c))

其中p=(a+b+c)/2

然后计算多边形的边数

先求出三角形的三个内角用余弦定理

例如角A=acos((bb+cc-aa)/(2b*c))

其他的一样

然后找出三个角的最大公因数ang=gcd(A,B,C)=gcd(gcd(A,B),C)

边数n=pi/ang

这里因为圆周角是圆心角的一半所以原本的公式是2pi/2ang化简得到n=pi/ang

然后正多边形的面积就是n个等腰三角形的面积也就是

S=n1/2rrsin(2*pi/n)

代码

#include <bits/stdc++.h>
using namespace std;
double gcd(double a,double b)
{
  return a<0.01?b:gcd(fmod(b,a),a);
}
double pi=acos(-1);
int main()
{
  /*ios::sync_with_stdio(0);
  cin.tie(0);
  cout.tie(0);*/
  double x1,y1,x2,y2,x3,y3;
  cin>>x1>>y1>>x2>>y2>>x3>>y3;
  double a=sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
  double b=sqrt((x1-x3)*(x1-x3)+(y1-y3)*(y1-y3));
  double c=sqrt((x2-x3)*(x2-x3)+(y2-y3)*(y2-y3));
  double p=(a+b+c)/2;
  double s=sqrt(p*(p-a)*(p-b)*(p-c));
  double r=(a*b*c)/(4*s);
  double A=acos((b*b+c*c-a*a)/(2*b*c));
  double B=acos((a*a+c*c-b*b)/(2*a*c));
  double C=acos((a*a+b*b-c*c)/(2*b*a));
  double ang=gcd(gcd(A,B),C);
  double n=pi/ang;
  printf("%.6f",n/2.0*r*r*sin(2*pi/n));
}
posted @ 2019-01-18 11:57  baccano!  阅读(199)  评论(0编辑  收藏  举报