首页 > 编程语言 >D 宿命之间的对决【2023牛客寒假算法基础集训营3】

D 宿命之间的对决【2023牛客寒假算法基础集训营3】

时间:2023-01-20 23:11:52浏览次数:64  
标签:变为 include 奇数 必败 偶数 牛客 2023 集训营 2k

D 宿命之间的对决

原题链接

题意

  • 现在给定一个正整数n,小红和小紫轮流操作,每次取n的一个因子x,使得n减去x。谁先将n减到0谁输。
    小红先手操作,她想知道在双方足够聪明的情况下,谁会获得最终的胜利?

思路

  1. 奇偶相加减,(同偶异奇)

设奇数a为\(2k_1 + 1\),奇数b为\(2k_2 + 1\),偶数c为\(2k_3\),偶数d为\(2k_4\).(\(k\in Z\))
奇 \(-\) 奇 \(=\) 偶
\((2k_1 + 1) - (2k_2 + 1) = 2(k_1 - k_2) = 2k_{new}\)
奇 \(-\) 偶 \(=\) 奇
$(2k_1 + 1) - 2k_3 = 2(k_1 - k_3) + 1 = 2k_{new} + 1 $
偶 \(-\) 偶 \(=\) 偶
\(2k_3 - 2k_4 = 2(k_3 - k_4) = 2k_{new}\)
偶 \(-\) 奇 \(=\) 奇
\(2k_3 - (2k_1 + 1) = 2(k_3 - k_1) - 1= 2k_{new} + 1\)

  1. 奇数的因子中一定没有偶数,偶数的因子中一定有奇数和偶数
    \(\Rightarrow\) 奇数只能变为偶数,偶数总能变为奇数

  2. 递推

\(n = 1\)时,先手只能减去因子1变为0,因此先手必败
\(n = 2\)时,先手可以选择减去因子1,后手变为\(n = 1\)时的必败态,因此\(n = 2\)时先手必胜
\(n = 3\)时,先手只能减去因子1,后手变为\(n = 2\)时的必生态,因此\(n = 3\)时先手必败
\(n = 4\)时,先手可以选择减去因子1,后手变为\(n = 3\)时的必败态,因此\(n = 4\)时先手必胜
\(n =\)偶数,偶数总能变为奇数,奇数只能变为偶数,因此先手只要每次减为奇数就能保持自己是偶数
\(n =\)奇数,奇数只能变为偶数,偶数总能变为奇数,因此后手只要每次减为奇数就能保持自己是偶数
\(\Rightarrow\) 偶数先手总是能转变为前后已有的后手的必败态,奇数先手只能转变为前后已有的后手的必胜态
\(\Rightarrow\) 偶数先手必胜,奇数先手必败

代码

点击查看代码
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#include<vector>
#include<queue>
using namespace std;

#define X first
#define Y second

typedef long long LL;
const char nl = '\n';

void solve(){
	LL n;
	cin >> n;
	if(n%2)cout << "yukari";
	else cout << "kou";

}

int main(){
	ios::sync_with_stdio(false);
	cin.tie(0),cout.tie(0);

		solve();
	
}

标签:变为,include,奇数,必败,偶数,牛客,2023,集训营,2k
From: https://www.cnblogs.com/J-12045/p/17063320.html

相关文章

  • F 迎接终结的寂灭【2023牛客寒假算法基础集训营3】
    F 迎接终结的寂灭原题链接宇宙终极答案代码点击查看代码#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<cmath>#include<ve......
  • A 不断减损的时间【2023牛客寒假算法基础集训营3】
    A 不断减损的时间原题链接代码点击查看代码#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<cmath>#include<vector>#includ......
  • SMU Winter 2023 Round #6 (Div.2)
    A.OP题目:现在请你喊出某次神秘活动中的口号"fengqibisheng,yingyueerlai!"(不包含引号)。思路:这道题输出这句话就行B.Add9Zeros题目:题意就是将数组A中的数加9后拿......
  • SMU Winter 2023 Round #7 (Div.2)
    A.解开束缚缠丝II题意:在一堆字符里面找出最长的回文串,并把它的长度输出出来。思路:这道题,一开始想的是把所有情况都列举出来,然后一一判断是不是回文串。后面根据第二个......
  • HGAME 2023 Week2 Pwn YukkuriSay题解
    HGAME2023Week2PwnYukkuriSay题解检查保护:拿到文件先checksec一下:64位程序,开启canary和nx保护,没有开启PIE(可以使用绝对地址了)继续往下看,先不着急打开ida,我们先运......
  • 2023牛客寒假集训3
    A-不断减损的时间A-不断减损的时间_2023牛客寒假算法基础集训营3(nowcoder.com)小红拿到了一个数组,她每次操作可以选择一个偶数除以2,可以操作任意次(也可以不操作)。求最......
  • 力扣每日一题2023.1.20---1817. 查找用户活跃分钟数
    给你用户在LeetCode的操作日志,和一个整数k。日志用一个二维整数数组logs表示,其中每个logs[i]=[IDi,timei]表示ID为IDi的用户在timei分钟时执行了某个操作......
  • .NET周报【1月第3期 2023-01-20】
    这应该是2023年农历新年前的最后一篇.NET周报,再次预祝大家新年快乐!国内文章看我是如何用C#编写一个小于8KB的贪吃蛇游戏的https://www.cnblogs.com/InCerry/p/building-......
  • 2023WinterHoliday刷题总结第一弹
    \(2023WinterHoliday\)刷题总结第一弹\(CTF\)\(Web\)1.\(json格式:\)$json['x']=="wllm"\(JSON\)(JavaScriptObjectNotation,JS对象简谱)是一种轻量级的数据交换格式,采......
  • SQL260 牛客每个人最近的登录日期(一)
    题目描述请你统计一下牛客每个用户最近登录是哪一天。有一个登录(login)记录表,请你写出一个sql语句查询每个用户最近一天登录的日子,并且按照user_id升序排序思路每个......