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