URAL 1180. Stone Game (博弈 + 规律)[通俗易懂]

URAL 1180. Stone Game (博弈 + 规律)

大家好,又见面了,我是全栈君。

1180. Stone Game

Time limit: 1.0 second

Memory limit: 64 MB

Two Nikifors play a funny game. There is a heap of
N stones in front of them. Both Nikifors in turns take some stones from the heap. One may take any number of stones with the only condition that this number is a nonnegative integer power of 2 (e.g. 1, 2, 4, 8 etc.). Nikifor who takes the last stone wins.You are to write a program that determines winner assuming each Nikifor does its best.

Input

An input contains the only positive integer number
N (condition
N ≤ 10
250 holds).

Output

The first line should contain 1 in the case the first Nikifor wins and 2 in case the second one does. If the first Nikifor wins the second line should contain the minimal number of stones he should take at the first move in order to guarantee his victory.

Sample

input output
8
1
2

Problem Author: Dmitry Filimonenkov


Problem Source: Third USU personal programming contest, Ekaterinburg, Russia, February 16, 2002

解析:找规律。

考虑例如以下样例:
剩余石子的数量    first Nikifor
1                              win
2                              win
—- 依次选择1,2. 而且1 和 2是能够选择的。

3                              lose
—- 由于你选1或2的时候,另外一个人总能一次把剩下的取完。

4, 5                          win

—- 依次选择1,2,可以获胜。

6                              lose

7, 8                          win

…. 从上面的规律我们能够看出当 N mod 3 == 0 我们能确认first Nikifor一定能失败;否则的话。我们能选择的最小石子的数量 = N mod 3,此时first Nikifor获胜。

AC代码:

#include <bits/stdc++.h>
using namespace std;

int main(){
    int ans = 0;
    char c;
    while(scanf("%c", &c) && c != '\n') ans += c - '0';     //求个位数字之和以推断数字能否被3整除,数太大。直接存不下!

if(ans % 3 == 0) puts("2"); else printf("%d\n%d", 1, ans % 3); return 0;}

.

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/116181.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长

相关推荐

  • VHDL和Verilog的区别

    VHDL和Verilog的区别这两种语言都是用于数字电子系统设计的硬件描述语言,而且都已经是IEEE的标准。VHDL1987年成为标准,而Verilog是1995年才成为标准的。这个是因为VHDL是美国军方组织开发的,而Verilog是一个公司的私有财产转化而来的。为什么Verilog能成为IEEE标准呢?它一定有其优越性才行,所以说Verilog有更强的生命力。 这两

    2022年4月19日
  • FEC原理及其实现[通俗易懂]

    FEC原理及其实现[通俗易懂]感谢原作者:http://blog.csdn.net/rootusers/article/details/49097257视频会议中通常使用的FEC/QOS技术,这方面的资料比较复杂和稀少,根据这么多年的工作经验,做一下分享。 在IP视频通话中丢包造成的影响多种多样。其中对视频质量的影响主要有:马赛克现象、局部变形(图像的某些区域不清晰)、图像模糊、屏幕频繁刷新或闪

    2022年8月11日
  • 金蝶K3-航天信息税控发票开票软件接口程序

    金蝶K3-航天信息税控发票开票软件接口程序##金蝶K3-航天信息税控发票开票软件接口程序用于从航天信息[上海爱信诺航天信息有限公司]税控发票开票软件(金税盘版)文本接口导出TXT文件中提取数据。###开发环境SharpDevelop5.0###调用库NPOI(用于EXCEL文件生成)###背景公司之前使用一个金蝶开发的…

    2022年6月8日
  • python 数组添加数组_Python添加到数组[通俗易懂]

    python 数组添加数组_Python添加到数组[通俗易懂]python数组添加数组Pythondoesn’thaveanyspecificdatatypeasanarray.WecanuseListthathasallthecharacteristicsofanarray.Python没有任何特定的数据类型作为数组。我们可以使用具有数组所有特征的List。Pythonarraymodulecan…

    2022年8月13日
  • Windows 7系统DNS服务器配置方法

    Windows 7系统DNS服务器配置方法DNSDNS域名系统。域名系统是一个有序、结构化系统用于计算机与互联网或连接在一个私密网络系统。每个参与者补充了一个域名,代表不同的信息。电脑系统要求数字IP地址的功能。然而,这显然是非常困难的,对一些IP地址的门外汉来说,DNS可以翻译处容易记住的域名,DNS的重要性在于它是一个目录服务的互联网。正如电话目录翻译的人的名字到他们的电话号码,DNS也是这样,它们会翻译IP地

    2022年5月22日
  • ubuntu 卸载软件命令及方法[通俗易懂]

    ubuntu 卸载软件命令及方法[通俗易懂]1、如果是从UbuntuSoftwareCenter安装的,进入center,找到那个软件,很明显会有“卸载”的按钮;2、如果是tar、gz、zip之类解压就能用,免安装的,直接删除;3、如果是自己下载的deb包安装,或者通过apt-getinstall安装、或者通过添加ppa安装,使用sudoapt-getautoremovesoftware-name来卸载,为了一次卸干净,可以

    2022年10月5日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号