hdu6108小C的倍數問題(數學)

2021-08-06 04:06:03 字數 752 閱讀 5150

思路:

先理解一下為什麼乙個數各個數字上的和是3的倍數那這個數就是3倍數:

先看兩位數字的,如數碼ab組合

a+b為3的倍數

那麼10*a+b=9a+(a+b)

9a能被3整除,a+b能被3整除,所以10+b能被3整除

再看三位數字的,如數碼abc組合

a+b+c為3的倍數

那麼100*a+10*b+c=99a+9b+(a+b+c)

99a,9b,(a+b+c)都能被3整除,所以100*a+10*b+c能被3整除

實際上,對於任何乙個自然數a(1)a(2)a(3)a(4)....a(n)

如果a(1)+a(2)+a(3)+...+a(n)為3的倍數

那麼 a(1)*10^(n-1)+a(2)*10^(n-2)+....+a(n-1)*10+a(n)

=a(1)*[10^(n-1)-1]+a(2)*[10^(n-2)-1]+...+a(n-1)*9+[a(1)+a(2)+...+a(n)]

中間的每一項.都能被3整除

所以:乙個數各個數字上的和是3的倍數那這個數就是3倍數

所以,這道題直接求q-1的因子數就好了

但是不能直接遍歷,不然tle,

優化方法:

每個數至少兩個因子,乙個1,乙個自己本身,

所以直接定義ans=2,然後從2到sqrt(n),遍歷,

找到可以除盡的就把ans+=2;

考慮一點,如果n本身是完全平方數,就要把ans---;

hdu 6108 小C的倍數問題

acm.hdu.edu.cn showproblem.php?pid 6108 給定進製p,求有多少個b滿足p進製下,乙個正整數是b的倍數的充分必要條件是每一位加起來的和是b的倍數。在 p 進製下,每個正整數都可以都可以表示為 a0 a1p a2p 2 anpn a 0 a1 p anpn b 0 ...

HDU 6108 小C的倍數問題

對於每乙個數,能整除ans 當且僅當這個數每位之和是ans的倍數 要求在p進製下 x1 x2 p x3 p 2 n n b 0且要求 x1 x2 x3 b 0 那麼 x2 p 1 x3 p 2 1 b 0 b 0 當 b 能被 p 1 整除時 一定符合等式 即求 p 1 的因子個數,注意按 i sq...

小C的倍數問題

problem description 根據小學數學的知識,我們知道乙個正整數x是3的倍數的條件是x每一位加起來的和是3的倍數。反之,如果乙個數每一位加起來是3的倍數,則這個數肯定是3的倍數。現在給定進製p,求有多少個b滿足p進製下,乙個正整數是b的倍數的充分必要條件是每一位加起來的和是b的倍數。i...