hdu 4203 Doubloon Game <SG>

本文提供HDU 4203题目解答,通过SG函数寻找规律解决先手玩家最少拿取多少金币的问题。对于不同条件下的最优策略进行了详细解析。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

链接:http://acm.hdu.edu.cn/showproblem.php?pid=4203

题意: 有一堆数量为 N 金币, 每次可以拿 M^x ( x=0,1,2,... )个,问先手如果能获胜, 第一次最少拿几块, 不能胜则输出0;

思路: sg打表找规律

sg=0则为必败点, sg=1, 只要拿1个就可以了, 如果sg=2, 那么就拿M个;

View Code
 1 #include <iostream>
 2 #include <cmath>
 3 #include <cstring>
 4 #include <cstdio>
 5 #include <string>
 6 #include <stdlib.h>
 7 #include <algorithm>
 8 using namespace std;
 9 typedef long long LL;
10 const LL Mod= 1e9+7;
11 int sg[1000];
12 int T, N, M; 
13 int mex( int x )// sg
14 {
15     if( sg[x]!=-1 )return sg[x];
16     bool re[1005]={0};
17     int t=1;
18     while( 1 ){
19     
20         if(t>x)break;  
21         re[mex(x-t)]=1;    
22         t*=M;
23     } 
24     int i=0;
25     while( re[i] )i++;
26     return sg[x]=i; 
27 } 
28 
29 int main()
30 {
31     scanf("%d",&T);
32     for(int t=1;t<=T;t++){
33         scanf("%d%d",&N,&M);
34         if(M&1){
35             if(N&1)puts("1"); 
36             else puts( "0" );
37         }
38         else{
39             int x=N%(M+1);
40             if(x==M)printf("%d\n",M);
41             else{
42                 if(x&1)puts( "1" );
43                 else puts("0");
44             }
45         }
46     }
47 }

 

转载于:https://www.cnblogs.com/jian1573/archive/2013/04/30/3052364.html

在CUDA编程中,kernel<<<>>>是用来启动并行计算的语法。在<<<>>>中,必须指定一个表达式作为参数,该表达式指定了并行计算的线程块(block)和线程(thread)的数量。这个表达式的格式可以是一个常数,也可以是一个变量或者一个计算表达式。 例如,如果想要启动一个有16个线程块和256个线程的并行计算,可以使用以下形式的表达式: kernel<<<16, 256>>>(); 其中,16表示线程块的数量,256表示每个线程块中的线程数量。 另外,如果希望在编译时指定默认的线程块和线程数量,可以使用宏定义或者模板的方式来实现。通过设置默认值,并在调用kernel时不指定表达式,就可以使用默认的线程块和线程数量。同时,也可以添加依赖关系来根据不同的条件设置不同的默认值。 总结起来,当使用kernel<<<>>>时,必须提供一个表达式来指定线程块和线程的数量。这个表达式可以是一个常数、变量或者计算表达式。另外,也可以通过设置默认值和添加依赖关系来实现更灵活的使用方式。<span class="em">1</span><span class="em">2</span> #### 引用[.reference_title] - *1* [玩转CUDA——提示应输入表达式](https://blog.youkuaiyun.com/gaohang_hdu/article/details/81119627)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [Kconfig语法](https://download.youkuaiyun.com/download/pengfei24/4328218)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值