UVA 11489 Integer Game (逻辑推理)

来源:互联网 发布:皮影客软件怎么样 编辑:程序博客网 时间:2024/05/22 12:52

点击打开题目链接

此题一看暴力是肯定不行的,只能找规律,推公式.

题目要求是每次取完之后剩下的数的和是3的倍数,那么这个组成这剩下的和的元素中有多少个是3的倍数呢,假设经过统计有count 个,除了这count个之外剩下的数肯定都不能被3整除,只是这些不能整除3的数的和能整除3,试想一下,要是我拿走了这其中的一个,那剩下所有数的和就肯定不能整除3,那就意味着取不了了,所以每次只能取是3的倍数的元素,知道某个人没有是3的倍数的元素可取了,就输了!!!

#include <iostream>#include <cstring>using namespace std;int main(int argc, char *argv[]){int t,n,i,j,sum,count,sum1,count1,tt=0; char a[10005],ans;cin>>t;while(t--){cin>>a; ans='T';for(i=count=sum=0;i<strlen(a);i++){sum+=a[i]-'0';if((a[i]-'0')%3==0) count++;}for(i=0;i<strlen(a);i++){sum1=sum-(a[i]-'0');  count1=count;if(sum1%3==0){if((a[i]-'0')%3==0) count1--;if(count1%2==0) {ans='S'; break;}}}cout<<"Case "<<++tt<<": "<<ans<<endl;} return 0;}


 

原创粉丝点击