洛谷 P1865 A % B Problem

程序说明

线性筛+判断输入区间。注意题目要求是输出个数,第一次提交有一部分数据RE了。。结果发现是数组开成了1000000,除此之外把原本是int类型的isprime数组换成了boolean之后通过了。

代码如下:

import java.util.*;
import java.io.*;
public class Main {
    static boolean isprime[] = new boolean[1000001];
    static int prime[] = new int[1000001];
    public static void main(String[] args) {
        int n, m, l, r;
        Scanner sc = new Scanner(new BufferedInputStream(System.in));
        n = sc.nextInt();
        m = sc.nextInt();   
        fun(m);
        for(int i = 0; i < n; i++) {
            int cnt = 0;
            l = sc.nextInt();
            r = sc.nextInt();
            if(l < 1 || r > m) {
                System.out.println("Crossing the line");
                continue;   
            }
            else {
                for(int j = l; j <= r; j++)
                    if(isprime[j])
                        cnt++;                  
                System.out.println(cnt);                
            }           
        }
    }   
    static public void fun(int n) { 
        int i, j;
        int cnt = 0;
        for(i = 0; i <= n; i++)
            isprime[i] = true;
        isprime[0] = false;
        isprime[1] = false;
        for(i = 2; i <= n; i++) {
            if(isprime[i]) 
                prime[cnt++] = i;
            for(j = 0; i * prime[j] <= n && j < cnt; j++) {
                isprime[i * prime[j]] = false;
                if(i % prime[j] == 0) 
                    break;
            }
        }
    }
}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 回溯算法 回溯法:也称为试探法,它并不考虑问题规模的大小,而是从问题的最明显的最小规模开始逐步求解出可能的答案,并...
    fredal阅读 13,728评论 0 89
  • 50道经典Java编程练习题,将数学思维运用到编程中来。抱歉哈找不到文章的原贴了,有冒犯的麻烦知会声哈~ 1.指数...
    OSET我要编程阅读 7,129评论 0 9
  • 四、集合框架 1:String类:字符串(重点) (1)多个字符组成的一个序列,叫字符串。生活中很多数据的描述都采...
    佘大将军阅读 775评论 0 2
  • 陪舍友来上自习,看书之余,瞥见了自习室墙上的对话,内容如下: A: 单身就是一个人,在食堂吃馄钝。 B: 食堂的不...
    正经运营人阅读 262评论 0 1
  • 假期在妇儿医院做志愿者,前几天一直在急诊帮忙挂号,下午还去了肾脏免疫科陪小朋友玩 聊天。还进行了义卖活动,也帮助了...
    卫校一五助产阅读 189评论 0 0