UVA 11489 - Integer Game 博弈
来源:互联网 发布:外服盒子mac 编辑:程序博客网 时间:2024/05/17 01:42
看题传送门
题目大意:
S和T在玩游戏,S先。给出一数字串,两人轮流取出一个数字,要求每次取完之后剩下的数为3的倍数,或者没有数字留下。如果两个人足够聪明,求胜利的一方。
思路:
我一开始竟然没有输Case 直接交上去了,WA死了。笨蛋。
分情况讨论呗。
记3、6、9的个数为tsn
如果一开始和就是3的倍数,那S只能拿3、6、9,所以当这tsn为奇数个胜利~
如果一开始不是3的倍数,那S必须凑成3的倍数,所以之后tsn应该为偶数。
当然,题目还说拿完也算赢。所以只有一个数的时候S胜利。
#include<cstdio>#include<cstring>const int MAXN=1000+24;int cnt[10];char s[MAXN];int main(){int T;scanf("%d",&T);for(int ri=1;ri<=T;ri++){memset(cnt,0,sizeof(cnt));scanf("%s",s);int len=strlen(s),sum=0,temp;for(int i=0;i<len;i++){temp=s[i]-'0';cnt[ temp ]++;sum+=temp;}int tsn=cnt[3]+cnt[6]+cnt[9]; //three\six\ninebool first=false;if(len==1) first=true;else{if(sum % 3 !=0) {for(int i=1;i<=9;i++){if(cnt[i]!=0 && (sum - i ) % 3==0){if(tsn % 2 ==0) //第一个人拿走让剩下的为3的倍数,并且3、6、9个数为2的偶数倍能胜。first=true;break;}}}else if(tsn % 2 !=0) //或者一开始就是3的倍数,他需要奇数个first=true;}printf("Case %d: ",ri);if(first)printf("S\n");else printf("T\n");}}
- UVA 11489 - Integer Game 博弈
- UVa:11489 Integer Game(博弈)
- UVA 11489 Integer Game(博弈)
- UVa 11489 Integer Game (博弈&想法题)
- UVA 11489 - Integer Game(数论+博弈)
- UVA - 11489 Integer Game (博弈)
- UVA 11489 Integer Game (博弈)
- UVA 11489 Integer Game(博弈,规律)
- UVa 11489 - Integer Game (简单博弈 脑筋急转弯)
- UVA - 11489 Integer Game
- Uva 11489 - Integer Game
- UVa 11489 - Integer Game
- UVa 11489 Integer Game
- UVA 11489- Integer Game
- uva 11489Integer Game
- UVA 11489 Integer Game (逻辑推理)
- uva 11489 - Integer Game(数论)
- UVA 11489 I - Integer Game
- UI的dialogr和easyui中的tab的结合使用
- Linux服务器性能评估与优化
- java map的重复键值的排序http://tbwuming.iteye.com/blog/1873634
- 解决拷贝的VirtualBox虚拟磁盘文件无法挂载的问题
- uva 489
- UVA 11489 - Integer Game 博弈
- STL中的queue用法
- <!DOCTYPE html> 很重要 (引起页面布局错位)
- Accessing Individual Characters in a CString
- 在配置文件中设置全局变量
- 网络流算法模板
- getopt/getopts:Bash中命令行选项/参数处理
- openssl实现hmac(c++)
- 新建项目从其它地方拷贝ADFUtils工具类包代码出现很多错误