HDU 4662 MU Puzzle:找规律

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

题意:

  初始字符串为"MI"。

  有三个操作:

    (1)将‘M‘之后的所有字符翻倍。For example: MIU to MIUIU.

    (2)将‘III‘变为一个‘U‘。For example: MUIIIU to MUUU.

    (3)删除‘UU‘。For example: MUUU to MU

  给你一个字符串s,问你是否能将初始字符串"MI"通过一系列操作变为s。

题解:

  (1)因为‘III‘=‘U‘,所以令‘I‘=1,‘U‘=3.(操作2)

  (2)假设不进行操作3的话,将所有的‘U‘还原成‘III‘,‘I‘的个数为2的幂次方,也就是所有‘U‘,‘I‘之和为2^n。(操作1)

  (3)加上操作3,每删除一次‘UU‘,‘U‘,‘I‘之和减去6,所以sum = 2^n - k*6。(操作3)

  那么。。。打个表试试吧 (〃‘▽‘〃)

  1,2,4,8,10,14,16,20,26,32,34,40,46,52,58,64...

  哇有规律哦!

  sum为不能被3整除的偶数,或者1。

  所以读入的时候统计一下‘U‘,‘I‘之和,判断一下就好啦。

AC Code:

 1 #include <iostream>
 2 #include <stdio.h>
 3 #include <string.h>
 4
 5 using namespace std;
 6
 7 int cases;
 8 string s;
 9
10 int main()
11 {
12     cin>>cases;
13     while(cases--)
14     {
15         cin>>s;
16         bool flag=true;
17         int sum=0;
18         if(s[0]!=‘M‘) flag=false;
19         for(int i=1;i<s.size() && flag;i++)
20         {
21             if(s[i]==‘I‘) sum++;
22             else if(s[i]==‘U‘) sum+=3;
23             else flag=false;
24         }
25         if((sum&1) || sum%3==0) flag=false;
26         if(flag || s=="MI") cout<<"Yes"<<endl;
27         else cout<<"No"<<endl;
28     }
29 }
时间: 2024-08-05 08:16:37

HDU 4662 MU Puzzle:找规律的相关文章

hdu 4662 MU Puzzle

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4662 MU PuzzleTime Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 1296    Accepted Submission(s): 539 Problem Description Suppose there are the symbols

hdu 4952 Number Transformation (找规律)

题目链接 题意:给你个x,k次操作,对于第i次操作是:要找个nx,使得nx是>=x的最小值,且能整除i,求k次操作后的数 分析: 经过打表找规律,会发现最后的x/i,这个倍数会趋于一个固定的值,求出这个固定的值和K相乘就可以了, 为什么会趋于固定的值呢,因为最后虽然i在不断增长,但是x也是在增长的,每次的倍数会回退一个发现 有余数,然后再加上一个,所以趋于稳定. 官方题解: 1 #include <iostream> 2 #include <cstdio> 3 #includ

hdu 4861 Couple doubi (找规律 )

题目链接 可以瞎搞一下,找找规律 题意:两个人进行游戏,桌上有k个球,第i个球的值为1i+2i+?+(p−1)i%p,两个人轮流取,如果DouBiNan的值大的话就输出YES,否则输出NO. 分析:解题报告 1 #include <cstdio> 2 #include <iostream> 3 4 using namespace std; 5 int main() 6 { 7 int k, p; 8 while(cin>>k>>p) 9 { 10 if(k/

HDU 4927 Series (找规律+JAVA)

题目链接:HDU 4927 Series 题意:给出一串N个元素的序列,作为第一串序列,第二串序列是第二串序列相邻元素的查值(即Bi=Ai+1-Ai)...第三串....一直到第N-1串是序列中只有一个数. 刚开始想到模拟一发,WA了一把,推出公式,发现是二项展开的系数(正负交替).组合数,果断要大数,苦逼JAVA不会.和一起队友摸索着,又T了一发,再想到组合数的递推.终于A了 C(a-1,b)=C(a,b)*a/(b-a+1) AC代码: import java.math.BigInteger

HDU 4919 打表找规律 java大数 map 递归

== oeis: 点击打开链接 瞎了,x.mod(BigInteger.ValueOf(2)).equal( BigInteger.ValueOf(1)) 写成了 x.mod(BigInteger.ValueOf(2)).equal( 1 ) T^T100块没了... import java.math.*; import java.util.*; import static java.lang.System.out; import java.io.*; public class Main { s

HDU 4861 Couple doubi(找规律|费马定理)

Couple doubi Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Submit Status Practice HDU 4861 Description DouBiXp has a girlfriend named DouBiNan.One day they felt very boring and decided to play some games. The rule of th

HDU 4990 Reading comprehension (找规律+矩阵快速幂)

题目链接:HDU 4990 Reading comprehension 题目给的一个程序其实就是一个公式:当N=1时 f[n]=1,当n>1时,n为奇数f[n]=2*f[n-1]+1,n为偶数f[n]=2*f[n-1]. 先不取模,计算前十个找规律.得到一个递推公式:f[n]=2*f[n-2]+f[n-1]+1 然后快速幂解决之. 给出一个神奇的网站(找数列通项):http://oeis.org/ AC代码: #include<stdio.h> #include<string.h&

hdu 5703 Desert(找规律)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5703 Desert Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65535/32768 K (Java/Others) Total Submission(s): 177    Accepted Submission(s): 141 Problem Description A tourist gets lost in the dese

HDU 4279 Number(找规律)

Number Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 4288    Accepted Submission(s): 1066 Problem Description Here are two numbers A and B (0 < A <= B). If B cannot be divisible by A, and A