当前位置: 首页 > article >正文

质数的小游戏~(牛客,cf)

添加链接描述
H 题:
在这里插入图片描述
n 的范围是 1e6
大致的思路 就是 每一段 固定一个质数,然后这一段中的 数+下标 的和都是这个质数。
对于[1 n] 这些数 ,对于n 向前找到 一个比他大的最小的质数。假设这个质数=n+j 。那么也就是说 我n 这个数应该放在下标为j 的位置。那么我下标为j+1 的位置吗,应该放 n-1 ,这样递减的放下去。我下标为N 的位置 放的是 n - ( n- j ) 保证了他们和都是 n+j 这个质数 。我再[ j n] 之间存了 [n j ]
这样 对于我 [1 j-1] 的位置,是我这个问题的子问题。用相同的方法去做。
我寻找质数的大小范围是 (a ,2*a】.因为这里面 必定存在一个质数,所以我这个质数是一定能找到的。
代码可以递归去做,也可以递推去做。
时间复杂度是线性的

int n;cin>>n;
    int i=n;
    while(i>0)
    {
        int mnp=i+1;
        while(!isprime(mnp))mnp++;
        int mxi=mnp-i;
        for (int j=i;j>=mxi;j--)
        a[j]=mnp-j;
        i=mxi-1;


    }

添加链接描述
不能说 一模一样 只能说 完全不差一点

#include <bits/stdc++.h>
using namespace std;
int read()
{
    int x = 0, f = 1;
    char ch = getchar();
    while (!isdigit(ch))
    {
        if (ch == '-')
            f = -1;
        ch = getchar();
    }
    while (isdigit(ch))
    {
        x = (x << 1) + (x << 3) + ch - '0';
        ch = getchar();
    }
    return x * f;
}
bool isprime(int x)
{
    for (int i=2;i*i<=x;i++)
    {
        if (x%i==0)
        {
            return false;
        }
    }
    return true;
}
void solve()
{
    int n;cin>>n;
    
    int i=2*n;
    while(i>0)
    {
        int mnp=i+1;
        while(!isprime(mnp))mnp++;
        int mxi=mnp-i;
        for (int j=i;j>=i-((i-mxi)/2);j--)
        {
            cout<<j<<" "<<mnp-j<<"\n";
        }
        i=mxi-1;
        
    }
}
int main()
{
    std::cin.tie(nullptr)->sync_with_stdio(false);
    int t=1;
     cin>>t;
    while (t--)
    {
        solve();
    }
    return 0;
}



http://www.kler.cn/a/377118.html

相关文章:

  • NLP中的神经网络基础
  • HTML5 标签输入框(Tag Input)详解
  • springboot+vue实现SSE服务器发送事件
  • 32单片机从入门到精通之开发环境——库文件(六)
  • 二十三种设计模式-建造者模式
  • 基本算法——分类
  • 《机器人SLAM导航核心技术与实战》第1季:第10章_其他SLAM系统
  • 【VUE+DRF】案例升级
  • 如何在Oracle数据库中获取版本信息
  • es拼音分词器(仅供自己参考)
  • 前端react常见面试题目(basic)
  • 树莓派开发相关知识七 -串口数码管
  • 从0开始学统计-什么是中心极限定理
  • [perl] 数组与哈希
  • 【Linux】IPC进程间通信:并发编程实战指南(一)
  • 纯前端生成PDF(jsPDF)并下载保存或上传到OSS
  • 提升当当网数据爬取效率:代理IP并发抓取技术
  • [Redis] Redis事务
  • Linux内核与用户空间
  • 问:Redis如何做到原子性?
  • (自用)机器学习python代码相关笔记
  • ES入门:查询和聚合
  • Java之继承
  • Rust 跨平台应用的最佳实践
  • MiniWord
  • RHCE: DNS服务器