http://codeforces.com/contest/834

A. The Useless Toy

题意:

<,>,^,v这4个箭头符号,每一个都可以通过其他及其本身逆时针或者顺时针旋转得到。

现在给出起始符号和结束符号,以及旋转的次数,判断是逆时针还是顺时针或者是无法判断。

思路:

可以知道4为一个周期,所以就把次数对4取余数,看一个周期之内的操作就可以了,分别模拟顺时针和逆时针的操作,如果都可以到达或者都不可以到达,那么它们就是不可识别的行为,其它就可以判断顺时针或者逆时针了。

代码:

 #include <stdio.h>
#include <string.h> int main()
{
bool f1 = ;
bool f2 = ; int n; char c1,c2; scanf("%c %c",&c1,&c2); scanf("%d",&n); n %= ; char tmp = c1; for (int i = ;i < n;i++)
{
if (tmp == '<') tmp = '^';
else if (tmp == 'v') tmp = '<';
else if (tmp == '>') tmp = 'v';
else if (tmp == '^') tmp = '>';
} if (tmp == c2) f1 = ; tmp = c1; for (int i = ;i < n;i++)
{
//printf("%c\n",tmp);
if (tmp == '<') tmp = 'v';
else if (tmp == 'v') tmp = '>';
else if (tmp == '>') tmp = '^';
else if (tmp == '^') tmp = '<';
} if (tmp == c2) f2 = ; //printf("%d %d",f1,f2); if (f1 && !f2)
printf("cw\n");
else if (!f1 && f2)
printf("ccw\n");
else
printf("undefined\n"); return ;
}

B. The Festive Evening

题意:

一家人要举办宴会。每个客人从他自己特定的门进去,每一道门直到最后一个客人进去之后才会关闭。现在有若干个守卫,他们在每一道门关闭之后才会去守卫另一道门。一个时间单位之内只能按顺序进去一个客人,现在给出客人进门的序列以及守卫的数量,问这个过程中是否有门是无防守的。

思路:

从前往后遍历,记录每一道门第一次出现的位置,然后从后往前遍历,记录每一道门最后一次出现的位置。

之后统计每一时刻有多少道门是开着的,再与守卫的数量进行对比。

代码:

 #include <stdio.h>
#include <string.h> struct node
{
int x,y;
}a[]; int b[]; int main()
{
int n,k; scanf("%d%d",&n,&k); char s[]; scanf("%s",s+); for (int i = ;i < ;i++)
{
for (int j = ;j <= n;j++)
{
if (s[j] == 'A' + i)
{
a[i].x = j;
break;
}
}
} for (int i = ;i < ;i++)
{
for (int j = n;j >= ;j--)
{
if (s[j] == 'A' + i)
{
a[i].y = j;
break;
}
}
} for (int i = ;i < ;i++)
{
for (int j = a[i].x;j <= a[i].y;j++)
{
b[j]++;
}
} bool ans = ; for (int i = ;i <= n;i++)
{
if (b[i] > k) ans = ;
//printf("%d ",b[i]);
} if (ans) printf("YES\n");
else printf("NO\n"); return ;
}

C. The Meaningless Game

题意:

两个人玩一个游戏,他们的初始值都为1,每次选一个自然数k(除0),一个人乘以k^2,另一个乘以k,现在给出两个数字a,b,问他们的游戏是否可能达到这个结果。

思路:

看题解补的。首先,如果有可能达到这个结果,那么a*b肯定是一个数的3次方,把a*b开3次方之后,得到的结果必定能整除a,也必定能整除b,而且它的3次方也必定等于a*b。

按照上面3个条件判断就可以了。

代码:

 #include <stdio.h>
#include <string.h>
#include <math.h> int main()
{
int n; scanf("%d",&n); while (n--)
{
long long a,b; scanf("%I64d%I64d",&a,&b); long long c = a * b; long long d = round(pow(c*1.0,1.0 / )); if (a % d > || b % d > || d * d * d != c) printf("No\n");
else printf("Yes\n");
} return ;
}

最新文章

  1. 简述我的SOA服务治理
  2. 开发该选择Blocks还是Delegates
  3. SSIS 处理NULL
  4. django--app(六)
  5. PostgreSQL笔记
  6. 网络流(最大独立点集):POJ 1466 Girls and Boys
  7. POJ 2653 Pick-up sticks
  8. 浅谈Unix I/O模型
  9. 【Docker】 积累
  10. V7000存储数据恢复_底层结构原理拆解及Mdisk磁盘掉线数据恢复方法
  11. Android官方命令深入分析之bmgr
  12. CVE-2017-12149 JBOOS AS 6.X 反序列化漏洞利用
  13. STM32f030f4p6 内部flash 打包读写
  14. 转载-Mac下iterm无法使用rz并提示waiting to receive.**B0100000023be50
  15. InstallShield 软件打包完整教程(含添加自定义依赖环境)
  16. XenServer7.6命令行导出导入虚拟机(迁移)
  17. ABP框架系列之十七:(Data-Filters-数据过滤)
  18. function类型(c++11)
  19. POJ-1887 Testing the CATCHER(dp,最长下降子序列)
  20. 没有无线路由,如何让手机使用电脑的网络xyytit

热门文章

  1. linux下Tomcat 安装后执行startup.sh,出现– Cannot find …bin/catalina.sh
  2. 初尝Eclipse
  3. SpringBoot工作机制
  4. Mycat 配置说明(server.xml)
  5. 笔记:Maven Web项目
  6. 【Python】 编码,en/decode函数以及print语句的一些探索
  7. 极光征文 | 写写文章就能赢 Filco,岂不美滋滋
  8. C++ STL常用容器基本用法汇总
  9. 获取android项目的数据库地址或者数据库名
  10. Java HashMap工作原理及实现