zoukankan      html  css  js  c++  java
  • hdu 4662 MU Puzzle 13多校第六场

    题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=4662

    题解: 首先U全部转化为三个I(本质),M又只能在开头。所以就是在乎I的个数问题了。  如果仅仅有扩倍,则I的个数为2^n个,如果中间某次去了K个两个U ,I的个数就为2^n-6*k, 再下次无论是扩倍还是减6,都还是可以表示为2^n-6*k.  所以必要条件找到了,那就是num(I)=2^n-6*k 有整数解,再看充分性,一旦可以表示为这种形式,我们就扩倍n次,然后做k次去两个U的操作,充分性得证。  

    考虑这个不定方程。 首先2^k mod6 是周期数列1,2,4,2,4....

    所以必要条件是I==1 || I>1&&I%6==2||I>1&&I%6==4    ,反之,只要满足这个条件,我们取充分大的n,使得I===2^n mod6, 然后2^n-I=6*一个正整数,ok啦

    然后注意细节就是中间不可以出现M。 

    #include <iostream>
    
    using namespace std;
    
    int main()
    {
    
      int T;
      cin>>T;
       string s;
       while(cin>>s)
     {
    
      int count=0;
      int length=s.length();
    
      int bad=0;
    
      if(s[0]!='M')
      {
        bad++;
        goto judge;
      }
      for(int i=0;i<length;i++)
       if(s[i]=='U')  count+=3;
       else if(s[i]=='I')  count++;
       else if(s[i]=='M'&&i>0)
       {
          bad++;
          goto judge;
    
       }
    
       if(count==1||count>1&&count%6==2||count>1&&count%6==4)
       ;
       else bad++;
    
    
       judge:
       if(bad!=0)
         cout<<"No"<<endl;
       else
         cout<<"Yes"<<endl;
     }
    
    }
    


  • 相关阅读:
    js Touch事件(向左滑动,后退)
    浏览器滚动条到底部自动加载更多
    如何终止terminal后台进程
    DFT介绍
    GDS area estimation
    Web Scraping with Python第二章
    Web Scraping with Python第一章
    python技巧汇总
    centos6.4安装zsh与dircolors
    linux解压命令汇总
  • 原文地址:https://www.cnblogs.com/814jingqi/p/3247185.html
Copyright © 2011-2022 走看看