2017"百度之星"程序設計大賽 - 初賽(A)小C的倍數問題
阿新 • • 發佈:2017-08-17
我們 main include else 條件 知乎 des sum 小學數學 Problem Description
根據小學數學的知識,我們知道一個正整數x是3的倍數的條件是x每一位加起來的和是3的倍數。反之,如果一個數每一位加起來是3的倍數,則這個數肯定是3的倍數。
現在給定進制P,求有多少個B滿足P進制下,一個正整數是B的倍數的充分必要條件是每一位加起來的和是B的倍數。
接下來T行,每行一個正整數P(2 < P < 1e9),表示一組詢問。
現在給定進制P,求有多少個B滿足P進制下,一個正整數是B的倍數的充分必要條件是每一位加起來的和是B的倍數。
Input 第一行一個正整數T表示數據組數(1<=T<=20)。
接下來T行,每行一個正整數P(2 < P < 1e9),表示一組詢問。
Output 對於每組數據輸出一行,每一行一個數表示答案。
Sample Input 1 10
Sample Output 3 解法:對於B進制下的數字,都有類似性質,答案是B-1的因子數,嗯,還有證明看知乎
1#include<bits/stdc++.h> 2 using namespace std; 3 int main(){ 4 int t; 5 cin>>t; 6 while(t--){ 7 int sum=0; 8 int num; 9 cin>>num; 10 num--; 11 for(int i=1;i*i<=num;i++){ 12 if(num%i) continue; 13 intpos=num/i; 14 if(i==pos){ 15 sum++; 16 }else{ 17 sum+=2; 18 } 19 } 20 cout<<sum<<endl; 21 } 22 return 0; 23 }
2017"百度之星"程序設計大賽 - 初賽(A)小C的倍數問題