2016级ACM寒假训练(八)
来源:互联网 发布:鸡兔同笼用c语言编程 编辑:程序博客网 时间:2024/04/29 12:53
1
无限螺旋线
Problem:A
Time Limit:1000ms
Memory Limit:65536K
Description
平面坐标系上有一个无限的螺旋线。螺旋由线段组成,线段是 [(0, 0), (1, 0)], [(1, 0), (1, 1)], [(1, 1), ( - 1, 1)], [( - 1, 1), ( - 1, - 1)], [( - 1, - 1), (2, - 1)], [(2, - 1), (2, 2)] 等。这个无限螺旋经过了平面上的所有整数点。焕神住在平面上的坐标 (0,0),他想要沿着螺旋步行到点(x,y)。焕神认为转弯非常困难,因此他想知道从(0,0)沿螺旋步行到点(x,y)要转多少次弯。
Input
多组数据,每行包含两个整数 x 和 y ( |x|, |y| <= 100 )
Output
每组数据输出一个整数,表示焕神要转弯多少次。
Sample Input
0 01 00 1-1 -1
Sample Output
0023
找规律 分情况讨论
#include "stdio.h"int main(){ int x,y,a,b,n; while(scanf("%d %d",&x,&y)!=-1) { if(y>x&&y>=-x&&y>0)n=4*y-2; if(y<-x&&y>=x&&x<0)n=-4*x-1; if(y<x&&y<=1-x&&y<=0)n=-4*y; if(y>1-x&&y<=x&&x>=1)n=4*x-3; if(x==0&&y==0)n=0; printf("%d\n",n); } return 0; }
2 依旧是找规律
跳房子
Problem:B
Time Limit:1000ms
Memory Limit:65536K
Description
有一种游戏叫做跳房子,游戏范围由正方形组成,数字从下到上,同一排从左到右填在格子里,如下图所示,从最下面开始每行的格子数1-1-2-1-2-1-2-(1-2)...这样重复下去。现在给你一个坐标系如图所示,正方形的边长为a。烨神特别喜欢玩跳房子,有一天他突然想到一个问题,如果他往(x,y)点抛出一个石头,这个石头会不会正好落在格子里?如果会,那会落在哪一个格子里?P.S这里指的是严格落在里面,落在边上不行
Input
输入数据有多组。每组输入只有三个整数a,x,y,a (1 ≤ a ≤ 100) 为正方形的边长,x,y ( - 106 ≤ x ≤ 106, 0 ≤ y ≤ 106) 为烨神抛出的石头的坐标。
Output
输出石头所在的格子号,如果不在格子里输出“-1”。(不含引号)
Sample Input
1 0 03 1 13 0 103 0 73 4 0
Sample Output
-115-1-1
#include "stdio.h"int main(){int a,x,y,l,a1,b1;float k;while(scanf("%d %d %d",&a,&x,&y)!=-1){l=y/a;k=a/2.0;if(l*a==y)printf("-1\n");else{if(l==0){if(x<k&&x>-k)printf("1\n");else printf("-1\n");}else {a1=l/2;a1=a1*2;if(a1!=l){if(x<k&&x>-k)printf("%d\n",3*(l-1)/2+2);else printf("-1\n");}else{if(x>0&&x<a)printf("%d\n",3*l/2+1);else{if(x<0&&x>-a)printf("%d\n",3*l/2);else printf("-1\n");}}}}}return 0;}
3
栅栏
Problem:C
Time Limit:1000ms
Memory Limit:65536K
Description
苟神想在他的农场周围围上一圈栅栏,但是他太懒了不想自己做,于是机智的苟神买了一个会围栅栏的机器人。苟神想要一个正多边形的栅栏,但是机器人只会沿着直线走,然后转弯把栅栏的顶点围成一个特定的角度。这时候问题就来了,机器人能不能围出苟神想要的栅栏呢?也就是说存不存在一个正多边形的顶点角度是a呢?
Input
输入数据有t组。第一行输入一个整数t (0 < t < 180),接下来t行每行有一个整数a (0 < a < 180)为机器人能围成的特定角度。
Output
如果能做出苟神想要的栅栏输出“YES”,否则输出“NO”。(不含引号)
Sample Input
3306090
Sample Output
NOYESYES
小学数学公式
#include <stdio.h>#include <math.h>int main(){ int x,n; scanf("%d",&n); while(n--) { scanf("%d",&x); if(360%(180-x)==0) printf("YES\n"); else printf("NO\n"); } return 0;}
4
正方形和矩形
Problem:D
Time Limit:1000ms
Memory Limit:65536K
Description
韩大神有一个坐标系上面有n个矩形,每个矩形的顶点都在整数坐标上且边都平行于x轴和y轴,这些矩形可能共边但不会重叠。他想知道这些矩形是否组成了一个正方形。
Input
输入数据有多组。第一行是一个整数n(1 ≤ n ≤ 5)。接下来n行每行有4个整数x1,y1,x2,y2 (0 ≤ x1 < x2 ≤ 31400, 0 ≤ y1 < y2 ≤ 31400) 来表示矩形的位置,(x1,y1)为矩形左下角坐标,(x2,y2)为矩形右上角坐标。没有矩形重叠,也就是说没有任何一个矩形的顶点在其他矩形内部。
Output
如果组成了一个正方形输出“YES”,否则输出“NO”。(不含引号)
Sample Input
50 0 2 30 3 3 52 0 5 23 2 5 52 2 3 340 0 2 30 3 3 52 0 5 23 2 5 5
Sample Output
YESNO
根据面积判断
正方形和矩形
Problem:D
Time Limit:1000ms
Memory Limit:65536K
Description
韩大神有一个坐标系上面有n个矩形,每个矩形的顶点都在整数坐标上且边都平行于x轴和y轴,这些矩形可能共边但不会重叠。他想知道这些矩形是否组成了一个正方形。
Input
输入数据有多组。第一行是一个整数n(1 ≤ n ≤ 5)。接下来n行每行有4个整数x1,y1,x2,y2 (0 ≤ x1 < x2 ≤ 31400, 0 ≤ y1 < y2 ≤ 31400) 来表示矩形的位置,(x1,y1)为矩形左下角坐标,(x2,y2)为矩形右上角坐标。没有矩形重叠,也就是说没有任何一个矩形的顶点在其他矩形内部。
Output
如果组成了一个正方形输出“YES”,否则输出“NO”。(不含引号)
Sample Input
50 0 2 30 3 3 52 0 5 23 2 5 52 2 3 340 0 2 30 3 3 52 0 5 23 2 5 5
Sample Output
YESNO
#include <iostream>#include<cstdio>#include<cstdlib>#include<cstring>#include<algorithm>using namespace std;struct juxing{ int x1,y1,x2,y2;}point[10];int main(){ // freopen("data.in.txt","r",stdin); //freopen("data.out.txt","w",stdout); int n,s,x,y,xmax,ymax,xmin,ymin; while(~scanf("%d",&n)) { s=0,xmax=0,ymax=0,xmin=31400,ymin=31400; for(int i=0;i<n;i++) scanf("%d%d%d%d",&point[i].x1,&point[i].y1,&point[i].x2,&point[i].y2); //sort(point,point+n,cmp); for(int i=0;i<n;i++) { s+=(point[i].x2-point[i].x1)*(point[i].y2-point[i].y1); if(point[i].x1<xmin) xmin=point[i].x1; if(point[i].y1<ymin) ymin=point[i].y1; if(point[i].x2>xmax) xmax=point[i].x2; if(point[i].y2>ymax) ymax=point[i].y2; } x=xmax-xmin; y=ymax-ymin; if(x==y&&s==x*y) printf("YES\n"); else printf("NO\n"); } return 0;}
5
陈宇的序列
Problem:E
Time Limit:1000ms
Memory Limit:65536K
Description
给出1个序列an,给出序列中的一个值,计算下一个序列的值。序列如下:111211211111221
Input
输入1个序列中的下标n,n(1<= n <10)
Output
对于序列中的an. an要用long long
Sample Input
5
Sample Output
111221
Hint
智力题
11--- 表示前一个数“1”是 1 个 1;
21--- 表示前一个数“11”是 由 2 个 1 组成;
1211--- 表示前一个数“21”是 由 1 个 2、1 个 1 组成;
111221--- 即 11 12 21 ,表示前一个数“1211”是依次由 1 个 1,1 个 2,
2 个 1组成;
312211---即 31 22 11,表示前一个数“111221”是依次由 3 个 1,2 个 2,
1 个 1 组成;
所以,下一个数应填 13112221---即 13 11 22 21,表示前一个数“312211”是依次由 1 个 3,1 个 1,2 个 2,2 个 1 组成;
同理,再下一个数根据“13112221”填 1113213211,表示前一个数“13112221”是依次由 1 个 1,1 个 3,2 个 1,3 个 2,1 个 1 组成.
#include <iostream>using namespace std;int main(){ char a[10][50]={"1","11","21","1211","111221","312211","13112221","1113213211","31131211131221","13211311123113112211"}; int n; while(scanf("%d",&n)!=EOF) { printf("%s\n",a[n-1]); } return 0;}
0 0
- 2016级ACM寒假训练(八)
- 2016级ACM寒假训练(一)
- 2016级ACM寒假训练(二)
- 2016级ACM寒假训练(三)
- 2016级ACM寒假训练(四)
- 2016级ACM寒假训练(五)
- 2016级ACM寒假训练(六)
- 2016级ACM寒假训练(七)
- 寒假ACM训练(二)
- 寒假的ACM训练(一)
- Acm寒假训练有感
- 寒假的ACM训练三(PC110107/UVa10196)
- 2015年寒假ACM训练小结
- 2016寒假训练——寒假结束
- sduacm16级寒假训练 自测
- 2016寒假训练——二分(2)
- 2016 寒假训练赛(一) 自我总结
- 2016寒假训练赛(二)自我总结
- Html5 移动app开发
- 逃逸分析
- HighLighting System插件的使用以及一些问题
- 3DES三重数据加密算法
- (R/Python)t-SNE聚类算法实践指南
- 2016级ACM寒假训练(八)
- Android四种基本布局
- socket编程中IO函数
- 设置npm的镜像源
- eblearn 框架的理解学习(1)
- Quartz中时间表达式详细介绍与样例分析
- ASCII码表_全_完整版
- Android动画效果translate、scale、alpha、rotate详解
- 【ORACLE】ORA-01034ORACLE not available