猜字游戏-合法提示

来源:互联网 发布: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));}

}

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 华为云收藏满了怎么办 小米6云空间满了怎么办 华为云存储已满怎么办 苹果云备份空间不足怎么办 oppor9指纹与密码忘记怎么办 oppo显示密码格式不对怎么办 oppo云服务密码忘了怎么办 小米云内存满了怎么办 id储存空间满了怎么办 苹果手机邮箱服务器连接失败怎么办 苹果查看id闪退怎么办 域名卖出去后涉及赌博怎么办 发票认证后对方作废了怎么办 手机在屋里没信号怎么办 百度云上传文件和谐怎么办 收货地址写错了怎么办 阿里巴巴国际版出现加密令牌怎么办 淘宝寄货到转运仓拒收怎么办 淘宝已发货买家申请退货怎么办 买家给了一个差评不接电话怎么办 卖家单号填错了怎么办 拼多多虚假发货买家怎么办 买家退款后又收到货怎么办 买家确认收货已超时怎么办 淘宝买家不确认收货怎么办 买家快递单号填错怎么办 买家不确认收货不评价怎么办 淘宝不给改地址怎么办 淘宝快递发货后申请退款怎么办 摄影公司收钱后跑了怎么办 淘宝上申请退款卖家不处理怎么办 淘宝买东西商家发错货退回怎么办 假模特头头发毛燥怎么办 投资了网上融资平台被骗怎么办 微信被覆盖了怎么办 微信号被覆盖了怎么办 样品鞋子在灯光下变黄怎么办 美图秀秀拼图后发朋友圈模糊怎么办 手机重开淘宝网店怎么办 淘宝店铺下架了怎么办 淘宝东西下架了怎么办