zoukankan      html  css  js  c++  java
  • java实现第五届蓝桥杯生物芯片

    生物芯片

    X博士正在研究一种生物芯片,其逻辑密集度、容量都远远高于普通的半导体芯片。
    博士在芯片中设计了 n 个微型光源,每个光源操作一次就会改变其状态,即:点亮转为关闭,或关闭转为点亮。

    这些光源的编号从 1 到 n,开始的时候所有光源都是关闭的。

    博士计划在芯片上执行如下动作:

    所有编号为2的倍数的光源操作一次,也就是把 2 4 6 8 … 等序号光源打开

    所有编号为3的倍数的光源操作一次, 也就是对 3 6 9 … 等序号光源操作,注意此时6号光源又关闭了。

    所有编号为4的倍数的光源操作一次。

    直到编号为 n 的倍数的光源操作一次。

    X博士想知道:经过这些操作后,某个区间中的哪些光源是点亮的。

    【输入格式】
    3个用空格分开的整数:N L R (L<R<N<10^15) N表示光源数,L表示区间的左边界,R表示区间的右边界。

    【输出格式】
    输出1个整数,表示经过所有操作后,[L,R] 区间中有多少个光源是点亮的。

    例如:
    输入:
    5 2 3
    程序应该输出:
    2

    再例如:
    输入:
    10 3 6
    程序应该输出:
    3

    资源约定:
    峰值内存消耗 < 256M
    CPU消耗 < 1000ms

    请严格按要求输出,不要画蛇添足地打印类似:“请您输入…” 的多余内容。

    所有代码放在同一个源文件中,调试通过后,拷贝提交该源码。

    注意: main函数需要返回0
    注意: 只使用ANSI C/ANSI C++ 标准,不要调用依赖于编译环境或操作系统的特殊函数。
    注意: 所有依赖的函数必须明确地在源文件中 #include , 不能通过工程设置而省略常用头文件。

    提交时,注意选择所期望的编译器类型。

    import java.util.*;
    
    public class Main {
        public static void main(String[] args) {
            Scanner in = new Scanner(System.in);
            long n = in.nextLong();
            long l = in.nextLong();
            long r = in.nextLong();
    
            long a = (long)Math.sqrt(l);
            if(a * a != l) {
                a += 1;
            }
            long b = (long)Math.sqrt(r);
    
            long num = b - a + 1;
            long num2 = r - l + 1;
            System.out.println(num2 - num);
            in.close();
        }
    }
    
    import java.util.Scanner;
    
    public class Main {
        
        public long getP(long X) {
            long count = 1;
            for(long i = 2;i <= X / 2;i++) {
                if(X % i == 0)
                    count++;
            }
            return count;
        }
        
        public void getResult(long N, long L, long R) {
            long result = 0;
            for(long i = L;i <= R;i++) {
                long count = getP(i);
                if((count&1) == 1)
                    result++;
            }
            System.out.println(result);
        }
        
        //完全平方数的因子数为奇数个,其中因子包含1
        public void getResult1(long N, long L, long R) {
            long result = R - L + 1;
            long start = (long) Math.sqrt(L);
            if(start * start < L)
                start = start + 1;
            for(;start * start <= R;start++) {
                if(start * start >= L && start * start <= R)
                    result--;
            }
            System.out.println("借鉴网友解法:"+result);
        }
        
        public static void main(String[] args) {
            Main test = new Main();
            Scanner in = new Scanner(System.in);
            long N = in.nextLong();
            long L = in.nextLong();
            long R = in.nextLong();
            test.getResult(N, L, R);
            test.getResult1(N, L, R);
        }
        
    }
    
  • 相关阅读:
    ZeptoLab Code Rush 2015
    UVa 10048 Audiophobia【Floyd】
    POJ 1847 Tram【Floyd】
    UVa 247 Calling Circles【传递闭包】
    UVa 1395 Slim Span【最小生成树】
    HDU 4006 The kth great number【优先队列】
    UVa 674 Coin Change【记忆化搜索】
    UVa 10285 Longest Run on a Snowboard【记忆化搜索】
    【NOIP2016提高A组模拟9.28】求导
    【NOIP2012模拟10.9】电费结算
  • 原文地址:https://www.cnblogs.com/a1439775520/p/12947409.html
Copyright © 2011-2022 走看看