codeforces #1 题解
来源:互联网 发布:office2007 mac破解版 编辑:程序博客网 时间:2024/06/03 14:35
codeforces1A
题目链接:http://codeforces.com/problemset/problem/1/A
题意:给定一个n*m的矩形,然后给一个a*a的地板,求最少需要多少地板可以铺满这个矩形(不可以割断,可以重叠)
思路:做除法上取整,然后结果相乘即可,(注意相乘的结果用long long 保存)
【知识点】int数据范围
#include <bits/stdc++.h>using namespace std;int n,m,a;int main(){ while(~scanf("%d%d%d",&n,&m,&a)){ int x = ceil(n*1.0 / a); int y = ceil(m*1.0 / a); printf("%lld\n",(long long)x*y); } return 0;}
题目链接:http://codeforces.com/problemset/problem/1/B
题意:excel表格有两种表示行列的方式,一种是BC23类型,另一种是RXCX,其中X表示数字,给定一种表示方式,请输出另一种对应的表示方式
思路:对比:十进制转换成二十六进制,二十六进制转换成十进制。
【知识点】进制转换的灵活运用
#include <bits/stdc++.h>using namespace std;int t;char str[30], word[30];int main(){ for(int i = 1; i <= 26; i ++) word[i] = 'A' + (i - 1); scanf("%d",&t); while(t --){ scanf("%s",str); int len = strlen(str); int flag = 0, indx, num1 = 0, num2 = 0; for(int i = 0; i < len; i ++){ if(i == 0 && str[i] == 'R' && i + 1 < len && str[i+1] >= '0' && str[i+1] <= '9'){ flag ++; } if(str[i] == 'C' && i-1 >= 0 && str[i-1] >= '0' && str[i-1] <= '9' && i+1 < len && str[i+1] >= '0' && str[i+1] <= '9'){ flag ++; indx = i+1; } } if(flag == 2){//RXCX for(int i = 1; i < indx-1; i ++){ num2 = num2 * 10 + (str[i] - '0'); } for(int i = indx; i < len; i ++){ num1 = num1 * 10 + (str[i] - '0'); } int temp[1000], k = 0; while(num1){ if(num1 % 26 == 0){ temp[k ++] = 26; num1 = num1 / 26 - 1; } else{ temp[k ++] = num1 % 26; num1 /= 26; } } for(int i = k-1; i >= 0; i --){ printf("%c",word[temp[i]]); } printf("%d\n",num2); } else{ int i = 0; while(str[i] >= 'A' && str[i] <= 'Z' && i < len){ num1 = num1 * 26 + (str[i] - 'A') + 1; i ++; } while(str[i] >= '0' && str[i] <= '9' && i < len){ num2 = num2 * 10 + (str[i] - '0'); i ++; } printf("R%dC%d\n",num2,num1); } } return 0;}
题目链接:http://codeforces.com/problemset/problem/1/C
题意:给定一个正多边形的三个顶点坐标,求能够形成的面积最小的正多边形。
思路:对于一个正多边形来说,为了使其面积最小,则其边的数目应该尽量少(假设该正多边形存在一个外接圆,则形状越接近圆则面积越大,边的数目越多);
对于给定的三个顶点,一定不共线且存在外接圆,所以给定的三个顶点就是一个三角形,首先可以求出各个顶点之间的距离(即三角形的边长),然后通过海伦公式求解三角形的面积==>外接圆公式计算出外接圆的半径==>计算出三角形各个边之间的圆心角==>求出圆心角的最大公约数则是正多边形的圆心角(因为三角形的三个顶点都是正多边形的顶点且都在圆上, 所以三角形任意两边之间的圆心角都是正多边形的圆心角的倍数)==>求出正多边形的面积(拆分成n个等腰三角形求解即可)
【知识点】海伦公式
求外接圆半径
求外接圆的三角形的圆心
求浮点数的最大公约数
计算正多边形的面积
弧度和角度之间的相互转换
#include <bits/stdc++.h>using namespace std;const double PI = acos(-1.0);const double eps = 1e-2; //因为最多有100条边struct Point{ double x,y;}p[4];double dist(double xa, double ya, double xb, double yb){ return sqrt((xa-xb)*(xa-xb) + (ya-yb)*(ya-yb));}double fgcd(double a, double b){ if(fabs(a) < eps) return b; if(fabs(b) < eps) return a; return fgcd(b,fmod(a,b));}int main(){ for(int i = 0; i < 3; i ++) scanf("%lf%lf",&p[i].x,&p[i].y); double dis1 = dist(p[0].x,p[0].y,p[1].x,p[1].y); //求三边的长度 double dis2 = dist(p[0].x,p[0].y,p[2].x,p[2].y); double dis3 = dist(p[1].x,p[1].y,p[2].x,p[2].y); double p = (dis1 + dis2 + dis3) / 2; //求半周长 double area = sqrt(p*(p-dis1)*(p-dis2)*(p-dis3));//海伦公式求三角形面积 double r = (dis1 * dis2 * dis3) / (4 * area);//求外接圆半径 double angle1 = 2 * asin(dis1 / (2 * r)) * 180 / PI; //求三角形的各个圆心角 double angle2 = 2 * asin(dis2 / (2 * r)) * 180 / PI; double angle3 = 360 - angle2 - angle1; //使得图中三角形的个数应尽可能的少,则圆心角的角度应尽可能大,所以选择gcd(); double e = 360 / fgcd(angle1, fgcd(angle2,angle3)); //三角形个数 double angle = 360 / e; //度数 //求多边形面积 printf("%.8lf\n",sin(angle * PI / 180) * r * r * e / 2); return 0;}
- codeforces #1 题解
- 【codeforces】Codeforces Round #278 (Div. 1) 题解
- 【codeforces】Codeforces Round #284 (Div. 1) 【题解】
- 【codeforces】Codeforces Round #310 (Div. 1)【题解】
- codeforces 1(Round #1)题解
- CUGBACM Codeforces Tranning 1 题解
- 【codeforces #285(div 1)】AB题解
- [Codeforces #295(Div 1)]简要题解
- 【codeforces #295(div 1)】ABC题解
- 【codeforces #292(div 1)】ABC题解
- 【codeforces #290(div 1)】ABC题解
- 【codeforces #284(div 1)】ABC题解
- 【codeforces #283(div 1)】ABC题解
- 【codeforces #282(div 1)】AB题解
- 【codeforces #278(div 1)】ABCD题解
- 【codeforces #276(div 1)】ABD题解
- 【codeforces VK Cup Round 1】BDE题解
- 【codeforces #299(div 1)】ABC题解
- Linux下的c如何进行GDB调试
- 用ssm实现qq登录
- 九九乘法表
- 如何学习caffe
- 统计学习-k近邻法与kd树
- codeforces #1 题解
- Python爬虫实战(十一):两种简单的方法爬取动态网页
- 计算机网络第五次作业
- HDU 4405 Aeroplane chess
- python list 参数传递方式
- 717. One-bit and two-bits characters
- 语音视频SDK如何实现超低延迟优化?
- 主席树
- namespace