题目链接:

http://acm.hdu.edu.cn/showproblem.php?pid=4662

题目是问目标串能否由MI得到,我们可以逆向思维,目标串能否反过来处理得到MI,所以,首先排除M没有出现或者出现超过一次,或者只出现了一次但没有出现在第一个位置的情形····也就是说只剩下第一个位置是M,然后不再出现M的情形····

接下来思考如何得到I,既然要得到I,U必然要化成I,一个U相当于3个I,接下来还可以每次添加UU,相当于添加了6个I,这样当I的个数能凑成2^k,k>=0时,就是解

问题转化为如下:

关于x + 6*y = 2^k中x的整数解

问题描述:

当x取何值时,一定能找到一对y,k,其中y>=0,k>=0,y,k都是整数,来满足 x + 6*y = 2^k。

答案:

x= 1,或者x%6 =2 或者x%6 =4.

证明:

显然当x = 1时,y=0,z=0时满足条件,x=1是解。

现在只考虑x>1的情形。

当x>1时,如果x为解。

那么x = 2^k-6*y。k>0····

注意到8%6 = 2

那么k个2(k>0)相乘后的积%6 一定为2或4。

那么x%6 = (2^k-6*y)%6 = 2^k %6 = 2或4。

这就证明了如果x是解,要么x =1,否则x%6=2或4.

那么是不是凡是%6=2或4的就一定是解呢···答案是肯定的。

先考虑2+6*q的情形

2+6*q+6*y = 2^k

3(q+y)+1 = 2^p , p =k-1

注意要4%3=1,由此得到2^(2t)%3 = 1,2^(2t+1)%3 = 2.

上面的式子必然成立。

4+6*q的情形同样可以证明。

事实上,可以从另外一个角度思考,1必然是解,当x>=1时,如果(2^k-x)%6=2^k%6 - x%6 = 0,,注意到2^k%6=2或4,所以除非x%6=2或者4,否则等式不会成立

贴代码:

 #include <cstdio>
#include <cstring>
#define N 1000007
char a[N];
int main()
{
// freopen("in.c","r",stdin);
int n;
scanf("%d",&n);
for(int i=; i<n; ++i)
{
scanf("%s",a);
// printf("%s\n",a);
int len=strlen(a);
int cnt =;
if(a[] !='M')
{
printf("No\n");
continue;
}
bool flag = true;
for(int j=; j<len; ++j)
{
if(a[j] == 'M')
{
flag = false;
break;
}
if(a[j] == 'U')
cnt += ;
else
++cnt;
}
if(!flag)
{
printf("No\n");
continue;
}
if(cnt == )
{
printf("Yes\n");
continue;
}
// printf("cnt=%d\n",cnt);
if(cnt% == || cnt% == )
flag =true;
else flag =false;
if(flag)
printf("Yes\n");
else
printf("No\n");
}
return ;
}

HDU 4662 MU Puzzle 数论或者水题的更多相关文章

  1. hdu 4662 MU Puzzle

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4662 MU Puzzle Time Limit: 2000/1000 MS (Java/Others) ...

  2. HDU 4662 MU Puzzle (2013多校6 1008 水题)

    MU Puzzle Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total S ...

  3. HDU 4662 MU Puzzle:找规律

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4662 题意: 初始字符串为"MI". 有三个操作: (1)将'M'之后的所有字符翻 ...

  4. 【找规律】HDU 4662——MU Puzzle

    来源:点击打开链接 这个题目的来源是人工智能领域MU猜想.比赛的时候也参考了相关资料,可是最后差一点没有把规律推出来. 注意到以下几个性质.第一,MI怎么变换M永远只能在第一位.第二,因为变换时只能在 ...

  5. HDU 4662 MU Puzzle(找规律)

    题意:问是否能把MI通过以下规则转换成给定的字符串s. 1.使M之后的任何字符串加倍(即,将Mx更改为Mxx). 例如:MIU到MIUIU.2.用U替换任何III.例如:MUIIIU至MUUU.3.去 ...

  6. HDU 4662 MU Puzzle 简单找规律

    没有任何变换(III变U和删UU操作)之前,I 的个数一定是2^x个(也就是2的整数次幂) 若仅考虑III变U,那么设U的个数为k,I 的个数变为2^x-3*k 再加上删除UU操作,假设我们删除了2* ...

  7. HDU 4662 MU Puzzle 2013 Multi-University Training Contest 6

    现在有一个字符串"MI",这个字符串可以遵循以下规则进行转换: 1.Mx 可以转换成 Mxx ,即 M 之后的所有字符全部复制一遍(MUI –> MUIUI) 2.III 可 ...

  8. HDU 2096 小明A+B --- 水题

    HDU 2096 /* HDU 2096 小明A+B --- 水题 */ #include <cstdio> int main() { #ifdef _LOCAL freopen(&quo ...

  9. [HDU 2602]Bone Collector ( 0-1背包水题 )

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2602 水题啊水题 还给我WA了好多次 因为我在j<w[i]的时候状态没有下传.. #includ ...

随机推荐

  1. Pyhon 日志管理 -- logging

    Pyhon 日志管理 -- logging 一直觉得运行程序是能打印日志是一个神奇的事情,不懂日志产生的原理,后来听说Pyhton 有一个logging模块,So,要好好研究一下. 先贴出代码,看看她 ...

  2. SQL Timeout超时的处理方法

    第一步:修改Web.config配置文件.在数据库连接字符串中加上连接时间Connect Timeout,根据实际情况定时间. <!--连接数据库--> <connectionStr ...

  3. cookie session localstorage sessionStorage区别

    cookie:http://www.cnblogs.com/Darren_code/archive/2011/11/24/Cookie.html 重要特点: 1.cookie 有大小设置,有过期时间设 ...

  4. Java的JDK和JRE

    Java的JDK和JRE 1.计算机交互方式 图形化界面(Graphical User Interface GUI) 命令行方式(Command Line Interface CLI) 2.Java语 ...

  5. Linux crontab定时执行任务 命令格式与详细例子(转)

    基本格式 : * * * * * command 分 时 日 月 周 命令 第1列表示分钟1-59 每分钟用*或者 */1表示 第2列表示小时1-23(0表示0点) 第3列表示日期1-31 第4列表示 ...

  6. Analysis of single cell RNA-seq data(单细胞终极课程)

    业界良心啊,开源的单细胞课程. 随便看了几章,课程写得非常用心,非常适合新手. 课程地址:Analysis of single cell RNA-seq data 源码地址:hemberg-lab/s ...

  7. 『cs231n』作业3问题1选讲_通过代码理解RNN&图像标注训练

    一份不错的作业3资料(含答案) RNN神经元理解 单个RNN神经元行为 括号中表示的是维度 向前传播 def rnn_step_forward(x, prev_h, Wx, Wh, b): " ...

  8. P3377 【模板】左偏树(可并堆)

    //#pragma comment(linker, "/stack:200000000") //#pragma GCC optimize("Ofast,no-stack- ...

  9. dp练习(9)——最大乘积

    1017 乘积最大 2000年NOIP全国联赛普及组NOIP全国联赛提高组  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 黄金 Gold 题解       题目描述 Desc ...

  10. oracle进行字符串拆分并组成数组

    CREATE OR REPLACE TYPE CUX_STR_SPLIT_TYPE IS TABLE OF VARCHAR2 (4000); CREATE OR REPLACE PACKAGE cux ...