數學題 求因子個數
阿新 • • 發佈:2017-08-12
給定 other statistic mark scanf logs down targe rip
小C的倍數問題
Accepts: 1990 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) 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 Input1 10Sample Output
3
#include<cstdio> #include <cmath> using namespace std; int num(int n){ //返回的是因子總數 int count=2; for(int i=2;i<=sqrt(n);i++){ if(n%i==0){if(i==sqrt(n) && n/i==i){ //如果兩因子相同,則只加1 count++; } else count+=2; } } return count; } int main(){ int n,T; for(scanf("%d",&T);T--;){ scanf("%d",&n); if(n==2) puts("1"); else printf("%d\n",num(n-1)); } }
數學題 求因子個數