首页 > 其他分享 >51nod---无法表示的数

51nod---无法表示的数

时间:2023-05-31 16:34:48浏览次数:52  
标签:偶数 奇数 51nod LL 无法 --- 素数 ans include


题目:http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1176


题意:z = (x/2)取整后 + y + xy,x,y都是大于0的整数。即:


51nod---无法表示的数_ios


x,y取不同的数,z可能有多种表示方式,也可能一种都没有,比如3,15就无法用任何x,y来表示。

现在将所有无法表示的数排个序,组成一个序列S,给出一个整数n,你来求S[n]的值(n <= 40)。比如n = 1,

S[n] = 1,n = 2,S[n] = 3,由于S[n]可能很大,只输出mod 1000000007的结果即可。



分析:根据表达式,我们分x为奇数和偶数讨论:


(1)x为奇数,那么

51nod---无法表示的数_ios_02

,得到:

51nod---无法表示的数_#include_03


(2)x为偶数,那么

51nod---无法表示的数_ios_04

,得到:

51nod---无法表示的数_#include_05



很明显,我们知道一个事实:所有的奇数中除素数外都可以表示为两个大于1的奇数的乘积;而所有的偶数则能表示为两个

偶数的乘积或一个奇数和一个偶数的乘积。


我们从上面的(1),(2)两种情况来看,我们只需要求出同时不满足上面两个条件的z就可以了。


先来看条件(1),可以知道没有偶数乘偶数的情况,也就是说偶数乘偶数得到的2z+2是没有解的。


那么,这种数只能为

51nod---无法表示的数_ios_06

的形式,即有:

51nod---无法表示的数_取整_07

51nod---无法表示的数_取整_08

,同时要求2z+1为素数。
也就是

51nod---无法表示的数_#include_09

为素数时的

51nod---无法表示的数_取整_08

的值就是我们要求的。而形如

51nod---无法表示的数_#include_09

的素数叫做梅森素数。目前已发现48个梅森素数,可以查出对应的m值。



#include <iostream>
#include <string.h>
#include <stdio.h>
#include <math.h>

using namespace std;
const int MOD = 1000000007;
typedef long long LL;

LL p[] ={0,2,3,5,7,13,17,19,31,61,89,107,127,521,607,1279,2203,2281,3217,4253,4423,9689,9941,11213,19937,21701,23209,44497,86243,110503,132049,216091,756839,859433,1257787,1398269,2976221,3021377,6972593,13466917,20996011,24036583,25964951};

LL quick_mod(LL a,LL b,LL m)
{
    LL ans = 1;
    a %= m;
    while(b)
    {
        if(b&1)
        {
            ans = ans * a % m;
            b--;
        }
        b >>= 1;
        a = a * a % m;
    }
    return ans;
}

int main()
{
    int n;
    while(~scanf("%d",&n))
    {
        LL ans = quick_mod(2,p[n]-1,MOD);
        ans = (ans - 1 + MOD) % MOD;
        printf("%I64d\n",ans);
    }
    return 0;
}





标签:偶数,奇数,51nod,LL,无法,---,素数,ans,include
From: https://blog.51cto.com/u_16146153/6388092

相关文章

  • (动力节点)老杜零基础Java笔记-第一章 学前准备
    Java零基础教程视频(零基础学Java必刷,适合Java0基础,Java初学入门)课堂截图为什么使用截图工具在听课的过程中,有的时候老师操作的比较快,通过截图的方式将老师的操作保存下来,以便后期的操作。另外截图之后的图片也可以用于笔记的记录,在笔记当中最好采用图文并茂的方式,这样更加利于......
  • CVE-2023-33246学习
    1.参考学习CVE-2023-33246https://github.com/I5N0rth/CVE-2023-332462.本地搭建环境2.1下载镜像#dockerpullapache/rocketmq:4.9.1#dockerpullapacherocketmq/rocketmq-console:2.0.02.2启动broker、namesrv、console启动namesrvdockerrun-dit-p9876:987......
  • k8s-pod 健康检查
    k8s-pod健康检查pod健康检查有两类探针检查:livenessProbe和ReadinessProbe1、livenessprobe健康状态检查,周期性检查存活,检查失败,将重启容器2、readinessProbe可用性检查,检查服务是否可用,不可用将从service的endpoint中移除探针的检测方法exec,执行一段命令,命令执行返回的......
  • TF无法识别问题分析
    新做的板子发现TF插上之后有些板子系统无法识别到TF卡。后对不良板子和好板子进行分析:发现问题: 原理图1、发现插上TF卡后DET管脚会和TF卡座外壳地连接到一起。正常板子DET管脚会拉到0V左右,卡能识别。而不良......
  • golang实现设计模式之抽象工厂模式总结-代码、优缺点、适用场景
    抽象工厂模式也是一种创建型的设计模式,其是在工厂模式的基础上实现更高程度的内聚。我们知道在工厂模式中,一种产品类就需要新建个对应的工厂类生成产品的实例,这会有什么问题呢?虽然工厂模式解决了简单工厂模式不好扩展的问题,实现了OCP,但一种产品就需要新建一个工厂类,比如有10000种......
  • CSP-J 2020 普及组讲解
    CSP-J2020T1优秀的拆分题目的本质是求\(n\)的二进制表示。求\(n\)的二进制表示,或者每次暴力分解出小于等于\(n\)的最大的\(2\)的正整数次幂。时间复杂度\(O(\log{n})\)。T2直播获奖给定\(n\)个人的分数,对于每个\(i\),请你求出前\(i\)个人的第\(k=\max(1,......
  • Mybatis-plus关于代码生成器的使用
    1、添加依赖 2、在test包下创建一个CodeGet类,实现生成代码的功能。注意:全局配置、数据源配置一定要和自己的电脑配置一致! 3、执行CodeGet类中的main方法。打印台有如下图提示字样,即自动生成成功。 4、对比两张图。在wechat文件夹下有controller、entity、mapper、s......
  • 微信小程序使用ec-canvas真机上tooltip有阴影
    问题微信小程序项目中,使用了ec-canvas绘制图表,在开发者工具中预览正常,但是在真机上点击图表tooltip会出现一层阴影,如下图所示:修改后解决之后探索到解决方案,代码如下:tooltip:{trigger:'axis',textStyle:{align:'left',textShadowBlur:10,//重点......
  • 思考-关于格物致知,致良知
    问题描述为减少自己的思想内耗,也是为了尽快的闭环自己的价值体系,近期需要大量的写作和重复性的练习强化思考过程。主要问题是还是没能太过于清晰的认知到世故圆滑和直率的分寸,很多人劝我要圆滑,讲究人情世故,说我太过直,不会与他人打交道。我的观点:1.是真的不会与人打交道嘛?自......
  • Java实战-基于JDK的LRU算法实现、优雅的实现代码耗时统计(Spring AOP、AutoCloseable
    场景Java中基于JDK的LRU算法实现LRU算法-缓存淘汰算法-Leastrecentlyused,最近最少使用算法根据数据的历史访问记录来进行淘汰数据,其核心思想是:如果有数据最近被访问过,那么将来被访问的几率也更高在Java中可以利用LinkedHashMap容器简单实现LRU算法LinkedHashMap底层就是用......