nyOJ基础题:素数距离

//一次性全部生成完,想用多少用多少,时间长点#include <iostream>
#include<stdio.h>
char min(char a, char b){ return (a>b)?b:a;}
char max(char a, char b){ return (a>b)?a:b;}
void swapIntOrChar(int a, int b){ a^=b^=a^=b;}

bool isPrime(int n){
    if(n==1) return false;
    for(int i = 2; i*i <= n; i++) if(n % i == 0) return false;
    return true;
}
int prime[78500];//装78498个素数,0号废弃。
void generatePrimeArray(int n){ for(int i = 2, j = 1; i <= n; i++) if(isPrime(i)) prime[j++] = i;}

/*-------- fibonacci -----*/
unsigned long long f[50];//f[92]= 12200 16041 51218 76738 (20位),
//unsigned long long最大18446744073709551615  //20位
void generateFbnc( int n){//形成n个fibonacci数列数,供用。。
    f[0] = f[1] = 1;
    for(int i = 2; i < n; i++) f[i] = f[i-1] + f[i-2];
}
using namespace std;

int main(){
    int a, b, c, d, e;
    //printf("%d\n", isPrime(1000003));
    generatePrimeArray(1000003);
    //printf("%d    %d\n", prime[78498], prime[78499]);
    int loop_rounds;
    while(~scanf("%d", &loop_rounds)){//输出最近的和距离。
        while(loop_rounds--){
            int t, record;
            scanf("%d", &t);
            if(isPrime(t)){
                printf("%d 0\n", t);
                continue;
            }else if(t == 1){
                printf("2 1\n");
                continue;
            }

            /*找到第一个超过prime[i]的i*/
            for(int i = 1; i <= 78499; i++){
                if(t < prime[i]){
                    record = i;
                    break;
                }
            }
            record -= 1;

            //三者成等差.
            if(prime[record] + prime[record+1] == 2* t){
                printf("%d %d\n", prime[record], t-prime[record]);
                continue;
            }
            if(t-prime[record] < prime[record+1]-t) printf("%d %d\n", prime[record], t-prime[record]);
            else printf("%d %d\n", prime[record+1], prime[record+1]-t);
        }
    }
    return 0;
}
/*
样例输入
3
6
8
10
样例输出
5 1
7 1
11 1
*/

  

时间: 2024-11-09 00:56:54

nyOJ基础题:素数距离的相关文章

nyOJ基础题:蛇形填数

一遍AC #include <stdio.h> /* 描述 在n*n方陈里填入1,2,...,n*n,要求填成蛇形.例如n=4时方陈为: 10 11 12 1 9 16 13 2 8 15 14 3 7 6 5 4 输入 直接输入方陈的维数,即n的值.(n<=100) 输出 输出结果是蛇形方陈. 样例输入 3 样例输出 7 8 1 6 9 2 5 4 3 */ int main(){ int n; while(~scanf("%d", &n)){ int a[

nyOJ基础题:另一种阶乘问题 如1!!+2!!+3!!

#include<stdio.h> int jCheng[21];//as you like void generateSpecialJCheng(int input){ //!!阶乘存入第k个位置 for(int k = 1; k <= input; ++k){ int summary = 1; for(int s = 1; s <= k; s += 2){ summary *= s; } jCheng[k] = summary; } } int main(){ generate

nyoj 24 素数距离问题

素数距离问题 时间限制:3000 ms  |            内存限制:65535 KB 难度:2 描述 现在给出你一些数,要求你写出一个程序,输出这些整数相邻最近的素数,并输出其相距长度.如果左右有等距离长度素数,则输出左侧的值及相应距离. 如果输入的整数本身就是素数,则输出该素数本身,距离输出0 输入 第一行给出测试数据组数N(0<N<=10000) 接下来的N行每行有一个整数M(0<M<1000000), 输出 每行输出两个整数 A B. 其中A表示离相应测试数据最近的

nyoj 素数距离

素数距离问题 时间限制:3000 ms  |  内存限制:65535 KB 难度:2 描述 现在给出你一些数,要求你写出一个程序,输出这些整数相邻最近的素数,并输出其相距长度.如果左右有等距离长度素数,则输出左侧的值及相应距离.如果输入的整数本身就是素数,则输出该素数本身,距离输出0 输入 第一行给出测试数据组数N(0<N<=10000)接下来的N行每行有一个整数M(0<M<1000000), 输出 每行输出两个整数 A B.其中A表示离相应测试数据最近的素数,B表示其间的距离.

linux 基础题整理

基础题: 1.查看系统内核版本号及系统名称 2.查看smb服务所用的端口号 3.禁ping 4.查出22端口现在运行什么程序 5.登录提示符前的输出信息"you are welcome!!!" 6.成功登录后自动输出信息"距离全国比赛还剩1天!!!" 7.确认安全终端为tty1 8.取消普通用户的控制台访问的三个权限:reboot.halt.shutdown 9.只允许组ID为10的成员通过su命令改变为root用户 10.禁止Control-Alt-Delete键

面试题收集-java面试题及答案(基础题122道,代码题19道)

JAVA相关基础知识1.面向对象的特征有哪些方面?1.抽象:抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面.抽象并不打算了解全部问题,而只是选择其中的一部分,暂时不用部分细节.抽象包括两个方面,一是过程抽象,二是数据抽象.2.继承:继承是一种联结类的层次模型,并且允许和鼓励类的重用,它提供了一种明确表述共性的方法.对象的一个新类可以从现有的类中派生,这个过程称为类继承.新类继承了原始类的特性,新类称为原始类的派生类(子类),而原始类称为新类的基类(父类).派

python每日经典算法题5(基础题)+1(中难题)

现在,越来越多的公司面试以及考验面试对算法要求都提高了一个层次,从现在,我讲每日抽出时间进行5+1算法题讲解,5是指基础题,1是指1道中等偏难.希望能够让大家熟练掌握python的语法结构已经一些高级函数的应用.这些题目是在某些刷题的网站上登记的有水平的题目.这里如果有需要input的简单题,就略去了输出结果.如果时间充裕,则就会增加每日更多习题. 一:基础算法题10道 1.判断用户输入的年份是否为闰年 题目解析: (1)问题分析:能被4整除但不能被100整除的年份为普通闰年,能被400整除的年

1、基础题

基础题: 1.表单中 get与post提交方法的区别? 答:get是发送请求HTTP协议通过url参数传递进行接收,而post是实体数据,可以通过表单提交大量信息. 2.session与cookie的区别? 答:session:储存用户访问的全局唯一变量,存储在服务器上的php指定的目录中的(session_dir)的位置进行的存放 cookie:用来存储连续訪問一个頁面时所使用,是存储在客户端,对于Cookie来说是存储在用户WIN的Temp目录中的. 两者都可通过时间来设置时间长短 3.数据

素数距离问题

素数距离问题 时间限制:3000 ms  |  内存限制:65535 KB 难度:2 描述 现在给出你一些数,要求你写出一个程序,输出这些整数相邻最近的素数,并输出其相距长度.如果左右有等距离长度素数,则输出左侧的值及相应距离. 如果输入的整数本身就是素数,则输出该素数本身,距离输出0 输入 第一行给出测试数据组数N(0<N<=10000) 接下来的N行每行有一个整数M(0<M<1000000), 输出 每行输出两个整数 A B. 其中A表示离相应测试数据最近的素数,B表示其间的距