zoukankan      html  css  js  c++  java
  • 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);
        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,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));
    }
    
  • 相关阅读:
    [算法练习]ZigZag Conversion
    获取所有后缀DDE打开命令
    [算法练习]Add Two Numbers
    获取dll编译时生成的pdb文件的名称
    [转载]定位 C++/CLI 库的加载失败异常
    在C++/CLI环境下,千万不要把普通全局函数当标准C/C++的函数指针传递给native的库使用
    Mono集成中使用api获取当前mono 调用堆栈的方法
    简单对比了一下MonoXml与SystemXml在Unity下的表现
    C++从LPEXCEPTION_POINTERS获取调用堆栈
    遇到doxygen生成的chm文档目录如果有中文是乱码?
  • 原文地址:https://www.cnblogs.com/baccano-acmer/p/10286969.html
Copyright © 2011-2022 走看看