猜字游戏-合法提示
来源:互联网 发布:linux内网穿透知乎 编辑:程序博客网 时间:2024/05/22 10:42
题目:
牛牛和羊羊在玩一个有趣的猜数游戏。在这个游戏中,牛牛玩家选择一个正整数,羊羊根据已给的提示猜这个数字。第i个提示是”Y”或者”N”,表示牛牛选择的数是否是i的倍数。例如,如果提示是”YYNYY”,它表示这个数使1,2,4,5的倍数,但不是3的倍数。注意到一些提示会出现错误。例如: 提示”NYYY”是错误的,因为所有的整数都是1的倍数,所以起始元素肯定不会是”N”。此外,例如”YNNY”的提示也是错误的,因为结果不可能是4的倍数但不是2的倍数。现在给出一个整数n,表示已给的提示的长度。请计算出长度为n的合法的提示的个数。例如 n = 5:合法的提示有:YNNNN YNNNY YNYNN YNYNY YYNNN YYNNYYYNYN YYNYY YYYNN YYYNY YYYYN YYYYY所以输出12 输入描述:
输入包括一个整数n(1 ≤ n ≤ 10^6),表示已给提示的长度。
输出描述:
输出一个整数,表示合法的提示个数。因为答案可能会很大,所以输出对于1000000007的模
输入例子1:
5
输出例子1:
12
不多说上代码,看注解(动态规划):
`public class GamesTest {
/** * @param args the command line arguments * 寻找合法提示根据输入的长度,利用动态规划算法, * 在数的顺序中可以分为素数,1除外;素数的幂数;素数的倍数;分析出三种情况 当判断各数的Y\N时, * 1、素数情况下,Y/N都可以,和其他数没有关联 * 2、素数的倍数的情况下,其无论是Y、还是N、对整体没有影响 因为他们是被其约数决定的,动态规划中即d[i]=d[i-1]; * 3、素数的幂数的情况下,也就是2,4,8,16这种数,这时候情况就复杂了。 * 假设现在有2,4,8,那么有多少种情况呢,我们仔细分析也能找出规律 * YYY,YNN,NNN,YYN就这四种情况对于2,4YN,YY,NN三种情况 * 我们发现实际上也是有规律的,首先都能或者都不能两种,然后就是从左到右添加Y:YNN,YYN。 * 所以对于这种情况,我们得出规律,如果有n个幂次,就有n+1中可行的情况。 * */private static long Games(int num) { long result = 1; boolean[] flag = new boolean[num + 1]; for (int i = 2; i <= num; i++) { int count = 0; if (flag[i]) { //判断是否为素数 continue;` } for (int j = i + i; j <= num; j += i) { //将素数的倍数及幂数设置为true flag[j] = true; } for (int k = i; k <= num; k *= i) { //计算素数幂次数 count++; } result = result * (count + 1) % 1000000007; } return result;}public static void main(String[] args) { // TODO code application logic here Scanner scan = new Scanner(System.in); int test = scan.nextInt(); System.out.println(Games(test));}
}
阅读全文
1 0
- 猜字游戏-合法提示
- 猜数字游戏的提示
- 猜数字游戏的提示
- 猜数字游戏的提示
- UVA340-猜数字游戏的提示
- UVa 340 猜数字游戏的提示
- UVa 340 猜数字游戏的提示
- UVaOJ 340 猜数字游戏的提示
- uvaoj-340:猜数字游戏的提示
- 【基础编程】猜数字游戏的提示
- 4.猜数字游戏的提示MasterMind
- 微信小程序设置了合法请求域名,小程序一直提示不在合法域名列别中
- 游戏中的小红点提示
- UVa 340 Master-Mind Hints(猜数字游戏的提示)
- 例题3-4 猜数字游戏的提示 UVa340
- UVa 340 Master-Minds Hints(猜数字游戏的提示)
- 猜数字游戏的提示 算法竞赛入门经典
- 猜数字游戏的提示 (Master-Mind Hints, UVa 340)
- Unix下时间和日期
- Java实现二维码制作
- Java+Selenium3框架设计篇2-Selenium方法的二次封装和页面基类
- 安卓利用NDK打包so文件
- 使用op=(复合形式)替代op(独身形式)的优点
- 猜字游戏-合法提示
- 大话数据结构 code 第四章 05顺序队列_Queue
- commons-fileupload 上传中断异常处理
- Oracle 子查询
- 【目录】Ceph专题文章索引
- JVisualVM监视远程主机Tomcat运行情况
- java函数式编程
- Semaphore 信号量 控制进程
- Hyperledger fabric 学习笔记: go语言 与 JSON