在代码库上得到错误的答案。但我的数学是正确的

问题 https://www.codechef.com/problems/MATPH 的链接 所以,我在这个问题上停留了几个小时,我不知道我错在哪里。我使用Eratosthenes的Sieve来查找素数,并将所有素数保存在哈希映射中。在线法官在测试用例上给了我错误的答案。


        static void dri(int n) {

            long large=0;int r=0,x,count=0,p,count1=0;

            x=(int)Math.sqrt(n);


            //To understand why I calculated x let's take an example

            //let n=530 sqrt(530) is 23 so for all the numbers greater than 23 when 

            //we square them they will come out to be greater than n 

            //so now I just have to check the numbers till x because numbers 

            //greater than x will defiantly fail.I think you get 

            //what I'm trying to explain



            while(r<x) {

                r = map.get(++count); // Prime numbers will be fetched from map and stored in r

                int exp = (int) (Math.log(n) / Math.log(r));

                //To explain this line let n=64 and r=3.Now, exp will be equal to 3

                //This result implies that  for r=3 the 3^exp is the //maximum(less than n) value  which I can calculate by having a prime in a power

                if (exp != 1) {   //This is just to resolve an error dont mind this line

                    if (map.containsValue(exp) == false) {

                    //This line implies that when exp is not prime  

                    //So as I need prime number  next lines of code will calculate the nearest prime to exp

                        count1 = exp;

                        while (!map.containsValue(--count1)) ;  


                        exp = count1;

                    }

                    int temp = (int) Math.pow(r, exp);

                    if (large < temp)

                        large = temp;

                }

            }

            System.out.println(large);

        }


桃花长相依
浏览 92回答 1
1回答

慕慕森

对于每个测试用例,在包含最大漂亮数字的一行中输出≤&nbsp;N。如果不存在这样的数字,则打印 −1。我相信4是最小的美丽数,因为2是最小的素数,2^ 2等于4。N&nbsp;只需要≥ 0。所以, ,并且应该全部打印。我试过了。他们没有。我相信这就是你在CodeChef上失败的原因。dri(0)dri(1)dri(2)dri(3)−1我把它留给你自己来了解提到的对你的方法的调用是如何表现的,以及如何处理它。顺便说一句,将素数保存在地图中有什么意义?列表或排序集不是更合适吗?
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python