hdu 1999 不可摸數

2021-08-20 17:42:08 字數 557 閱讀 5138

別人的**寫的很好先記錄一下

#pragma warning(disable:4996) 

#include #include #include #include #include #include using namespace std;

/*題目只是求1000以內的不可摸數。

我們可以想想乙個數的s(n)大約等於多少,因為s(素數)=1,所以我們不需要考慮素數。

如果乙個數n是乙個素數m的平方,那麼其s(n)會是最小的,s(n)=m+1

1000內最大的素數是997,其平方是994009,也就說s(994009)=997+1=998

這個994009就是我們需要打表的最大範圍(我近似看成100w),

也就是說如果乙個數大於100w,那個s(n)必定大於1000,我們不需要考慮。

*/int a[1100000],has[1001];

void init()

} for(i=1;i<=1000000;i++) }

int main()

return 0;

}

HDU1999不可摸數

problem description s n 是正整數n的真因子之和,即小於n且整除n的因子和.例如s 12 1 2 3 4 6 16.如果任何 數m,s m 都不等於n,則稱n為不可摸數.input 包含多組資料,首先輸入t,表示有t組資料.每組資料1行給出n 2 n 1000 是整數。outp...

HDU1999不可摸數 暴力打表

看到這約數和第一反應是約數和函式,然後仔細一看不是正經的約數和函式,就去推去了,然後推的有點小複雜。數論函式那部分做多了 然後觀察也沒有用到什麼數論部分的特殊知識啊,難不成真的要暴力?大概分析了一下,應該要暴力1e6級別的。因為乙個數如果是合數,則至少有兩個非平凡因子,這兩個非平凡因子的和由均值不等...

hdu oj 1999 不可摸數

s n 是正整數n的真因子之和,即小於n且整除n的因子和.例如s 12 1 2 3 4 6 16.如果任何 數m,s m 都不等於n,則稱n為不可摸數.包含多組資料,首先輸入t,表示有t組資料.每組資料1行給出n 2 n 1000 是整數。如果n是不可摸數,輸出yes,否則輸出no 325 8 ye...