[hdu1847]博弈,推理
生活随笔
收集整理的這篇文章主要介紹了
[hdu1847]博弈,推理
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題意:一堆石子,有n個,兩個人輪流取,每次都只能取2的冪次方個數,不能取的人輸
思路:首先0是必敗態,2的所有冪次都是必勝態。由于選的數模3只能是1或2,恰好又都是2的冪次,0,、3都為必敗態,猜想3的所有倍數也為必敗態,證明如下:設狀態為x=3k,先手任選一個t,那么(x-t)%3不是1就是2,后手就取(x-t)%3,使得先手面臨的狀態始終是3的倍數,并且只要先手可以取,那么后手也就可以取,所以3的倍數都是必敗態。對于x=3k+p,p=1或2的狀態,先手都可以將其變成必敗態,即先手取p=x%3即可,因此為必勝態。
| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 | /*?********************************************************************************?*/#include?<iostream>?????????????????????????????????????????????????????????????????//#include?<cstdio>???????????????????????????????????????????????????????????????????//#include?<cmath>????????????????????????????????????????????????????????????????????//#include?<cstdlib>??????????????????????????????????????????????????????????????????//#include?<cstring>??????????????????????????????????????????????????????????????????//#include?<vector>???????????????????????????????????????????????????????????????????//#include?<ctime>????????????????????????????????????????????????????????????????????//#include?<deque>????????????????????????????????????????????????????????????????????//#include?<queue>????????????????????????????????????????????????????????????????????//#include?<algorithm>????????????????????????????????????????????????????????????????//#include?<map>??????????????????????????????????????????????????????????????????????//#include?<cmath>????????????????????????????????????????????????????????????????????//using?namespace?std;????????????????????????????????????????????????????????????????//????????????????????????????????????????????????????????????????????????????????????//#define?pb?push_back????????????????????????????????????????????????????????????????//#define?mp?make_pair????????????????????????????????????????????????????????????????//#define?X?first?????????????????????????????????????????????????????????????????????//#define?Y?second????????????????????????????????????????????????????????????????????//#define?all(a)?(a).begin(),?(a).end()???????????????????????????????????????????????//#define?fillchar(a,?x)?memset(a,?x,?sizeof(a))??????????????????????????????????????//????????????????????????????????????????????????????????????????????????????????????//typedef?pair<int,?int>?pii;?????????????????????????????????????????????????????????//typedef?long?long?ll;???????????????????????????????????????????????????????????????//typedef?unsigned?long?long?ull;?????????????????????????????????????????????????????//????????????????????????????????????????????????????????????????????????????????????//#ifndef?ONLINE_JUDGE????????????????????????????????????????????????????????????????//void?RI(vector<int>&a,int?n){a.resize(n);for(int?i=0;i<n;i++)scanf("%d",&a[i]);}????//void?RI(){}void?RI(int&X){scanf("%d",&X);}template<typename...R>????????????????????//void?RI(int&f,R&...r){RI(f);RI(r...);}void?RI(int*p,int*q){int?d=p<q?1:-1;??????????//while(p!=q){scanf("%d",p);p+=d;}}void?print(){cout<<endl;}template<typename?T>??????//void?print(const?T?t){cout<<t<<endl;}template<typename?F,typename...R>??????????????//void?print(const?F?f,const?R...r){cout<<f<<",?";print(r...);}template<typename?T>???//void?print(T*p,?T*q){int?d=p<q?1:-1;while(p!=q){cout<<*p<<",?";p+=d;}cout<<endl;}???//#endif?//?ONLINE_JUDGE??????????????????????????????????????????????????????????????//template<typename?T>bool?umax(T&a,?const?T&b){return?b<=a?false:(a=b,true);}????????//template<typename?T>bool?umin(T&a,?const?T&b){return?b>=a?false:(a=b,true);}????????//template<typename?T>????????????????????????????????????????????????????????????????//void?V2A(T?a[],const?vector<T>&b){for(int?i=0;i<b.size();i++)a[i]=b[i];}????????????//template<typename?T>????????????????????????????????????????????????????????????????//void?A2V(vector<T>&a,const?T?b[]){for(int?i=0;i<a.size();i++)a[i]=b[i];}????????????//????????????????????????????????????????????????????????????????????????????????????//const?double?PI?=?acos(-1.0);???????????????????????????????????????????????????????//const?int?INF?=?1e9?+?7;????????????????????????????????????????????????????????????//????????????????????????????????????????????????????????????????????????????????????///*?--------------------------------------------------------------------------------?*/int?main()?{#ifndef?ONLINE_JUDGE????freopen("in.txt",?"r",?stdin);????//freopen("out.txt",?"w",?stdout);#endif?//?ONLINE_JUDGE????int?n;????while?(cin?>>?n)?{????????puts(n?%?3??"Kiki"?:?"Cici");????}????return?0;}/*?********************************************************************************?*/ |
轉載于:https://www.cnblogs.com/jklongint/p/4700715.html
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的[hdu1847]博弈,推理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: AJAX跨域请访问的问题
- 下一篇: Eclipse中启动tomcat报错:A