數學 完全平方數

2022-05-03 16:39:09 字數 1493 閱讀 4601

time limit: 10 sec  memory limit: 128 mb

submit: 3015  solved: 1455

小 x 自幼就很喜歡數。但奇怪的是,他十分討厭完全平方數。他覺得這些

數看起來很令人難受。由此,他也討厭所有是完全平方數的正整數倍的數。然而

這絲毫不影響他對其他數的熱愛。 

這天是小x的生日,小 w 想送乙個數給他作為生日禮物。當然他不能送一

個小x討厭的數。他列出了所有小x不討厭的數,然後選取了第 k個數送給了

小x。小x很開心地收下了。 

然而現在小 w 卻記不起送給小x的是哪個數了。你能幫他一下嗎?

包含多組測試資料。檔案第一行有乙個整數 t,表示測試

資料的組數。 

第2 至第t+1 行每行有乙個整數ki,描述一組資料,含義如題目中所描述。 

含t 行,分別對每組資料作出回答。第 i 行輸出相應的

第ki 個不是完全平方數的正整數倍的數。

4 1

13 100

1234567

1 19

163

2030745

對於 100%的資料有 1 ≤ ki ≤ 10^9

試題分析:

題目說白了就是求第k個無平方因子數(不是完全平方數倍數的數)

那麼只需要求解第k個單個質因子的指數不超過1的數

所以我們可以二分這個數,然後每次判定一下它在符合要求的數的位置就可以了

那麼如何判斷它的位置呢?

我們只需要把所有≤n的i^2的倍數都減掉就可以了

之後用容斥原理處理一下重複的

但是容斥原理的時間複雜度並不能接受,所以可以考慮莫比烏斯函式

(詳見:

最後輸出二分出來的答案就可以了,題目並不難

**如下:

#include#include#include#includeusing namespace std;

long long prime[100001],miu[100001],mark[100001];

long long tot;

long long m;

void eular()

for(long long j=1;j<=tot;j++)

else miu[i*prime[j]]=-miu[i];

} }return ;

}long long check(long long k)

long long search(long long l,long long r)

}

完全平方數

完全平方數 time limit 10000ms memory limit 65536k total submit 44 accepted 42 case time limit 1000ms description 由1 9九個數字組成的全排列可以被看作是乙個九位數,程式設計求出這些九位數中第n個完...

完全平方數

coding utf8 python3 題目 完全平方數 乙個整數,它加上100和加上268後都是乙個完全平方數 求該數是多少 數字 1,1000 中,符合條件的數 python sqrt num.py b 1 e 1000 import sys,getopt import math defint ...

完全平方數

程式設計判斷乙個非負整數是否為完全平方數。乙個非負整數n是完全平方數當且僅當存在非負整數m,使得n m2n m 2n m2。要求如下 輸出1表示是完全平方數,輸出0表示不是。比如,輸入非負整數0時,應輸出1。不能有其他多餘的cin和cout語句。注 0是完全平方數 include using nam...