hdu 1215 七夕節(數論)

2021-07-11 17:02:40 字數 955 閱讀 9379

hdu 七夕節 (1215)

problem description

七夕節那天,月老來到數字王國,他在城門上貼了一張告示,並且和數字王國的人們說:」你們想知道你們的另一半是誰嗎?那就按照告示上的方法去找吧!」

人們紛紛來到告示前,都想知道誰才是自己的另一半.告示如下:

數字n的因子就是所有比n小又能被n整除的所有正整數,如12的因子有1,2,3,4,6.

你想知道你的另一半嗎?

input

輸入資料的第一行是乙個數字t(1<=t<=500000),它表明測試資料的組數.然後是t組測試資料,每組測試資料只有乙個數字n(1<=n<=500000).

output

對於每組測試資料,請輸出乙個代表輸入資料n的另一半的編號.

sample input

3 2

10 20

sample output

1 8

22一開始拿到這個題目會想這很簡單,不就是求乙個數的因子和嘛。

不過要考慮資料的大小,如果開乙個迴圈不細細考慮減少複雜度的話可能超時。

恩,問題就在這裡。我們知道,乙個數的因子總是成對出現的,譬如說:

假設

t=m*n(t,m,n均為正整數);
那麼可以斷定m和n其中必有乙個小於等於根號t,另乙個大於等於根號t,

令k*k==t(k為正實數),如果t=m*n,並且m<=k,則有n>=k;
(對於細節不加以詳述,大家可以在網上找找度娘)

那麼就可以想辦法把迴圈的次數由n減少到根號n,避免超時。

**如下(細節問題請看**):

#include

using

namespace

std;

int main()

cout

0;}

hdu 1215 七夕節 數論

這個題乍一看和poj1845很像,的確可以用poj1845的方法來做,但是這個題的資料規模比poj小很多,我在網上搜了一下,居然這個可以用篩法做,像篩素數那樣,把所有i的倍數都加上i 學習啦 2011 08 25 10 39 27 accepted 1215 93ms 2148k 319 b g t...

ACM 數論 HDU1215 七夕節 (模板!)

problem description 七夕節那天,月老來到數字王國,他在城門上貼了一張告示,並且和數字王國的人們說 你們想知道你們的另一半是誰嗎?那就按照告示上的方法去找吧 人們紛紛來到告示前,都想知道誰才是自己的另一半.告示如下 數字n的因子就是所有比n小又能被n整除的所有正整數,如12的因子有...

HDU 1215 七夕節 因數和

problem description 七夕節那天,月老來到數字王國,他在城門上貼了一張告示,並且和數字王國的人們說 你們想知道你們的另一半是誰嗎?那就按照告示上的方法去找吧 人們紛紛來到告示前,都想知道誰才是自己的另一半.告示如下 數字n的因子就是所有比n小又能被n整除的所有正整數,如12的因子有...