小C的倍數問題

2021-08-21 04:36:30 字數 992 閱讀 1877

problem description

根據小學數學的知識,我們知道乙個正整數x是3的倍數的條件是x每一位加起來的和是3的倍數。反之,如果乙個數每一位加起來是3的倍數,則這個數肯定是3的倍數。

現在給定進製p,求有多少個b滿足p進製下,乙個正整數是b的倍數的充分必要條件是每一位加起來的和是b的倍數。

input

第一行乙個正整數t表示資料組數(1<=t<=20)。

接下來t行,每行乙個正整數p(2 < p < 1e9),表示一組詢問。

output

對於每組資料輸出一行,每一行乙個數表示答案。

sample input

1 10

sample output

思路:拿十進位制為例,假設三位數 100*a+10*b+c可以

轉化成99*a+9*b+(a+b+c),很容易可以看出當(a+b+c)

是3的倍數能被3整除時,99*a+9*b+(a+b+c)也就能被3整除,

其它位數也都滿足該情況。當(a+b+c)是9的倍數時,99*a+9*b+(a+b+c)

也能被9整除,另外1也滿足這個條件,所以進製p為10時有

三個數1,3,9滿足。現在一般化,當進製p,假設三位數p*p*a+p*b+c

可以轉化成(p*p-1)*a+(p-1)*b+(a+b+c),當(a+b+c)能被(p-1)整

除時該三位數即能被(p-1)整除,((p^n-1)都能被(p-1)整除),

所以我們只需求p-1的約數的個數即可。包括p-1本身

#include#include#include#include#includeusing namespace std;

const int inf=1000000;

int main()

}if(sre*sre==p-1)

printf("%d\n",ans);

}}

小C的倍數問題

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

小C的倍數問題

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

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 ...