2017百度之星初赛(A) 1001 小C的倍数问题(余数定理)
2017-08-13 00:49
197 查看
【题目链接】HDU-6108
【题意】
给定进制P,求有多少个B满足P进制下,一个正整数是B的倍数的充分必要条件是每一位加起来的和是B的倍数。
【分析】
>余数定理 一个多项式f(x) 除以一线性多项式(x-a)的余式是 f(a)。
f(x)=x^n-1,f(x)/(x-1)的余式为f(1)=0,因此x^n-1都能被x-1分解。
附:利用余数定理进行因式分解
【代码】
【题意】
给定进制P,求有多少个B满足P进制下,一个正整数是B的倍数的充分必要条件是每一位加起来的和是B的倍数。
【分析】
假设有一个数s,按位记为abcd,在p进制下,可以转换为 s = a*p^3+b*p^2+c*p^1+d,分离出a+b+c+d,得s = a*(p^3-1)+b*(p^2-1)+c*(p^1-1)+a+b+c+d。
根据余数定理,我们可以知道,(p^3-1)、(p^2-1)、(p^1-1)都可以被(p-1)整除,a*(p^3-1)+b*(p^2-1)+c*(p^1-1)是(p-1)的整数倍。因此,只要满足a+b+c+d也为(p-1)的整数倍,s就是(p-1)的整数倍,也就是所有(p-1)的因子的整数倍。
这道题输出p-1的因子个数即可。
>余数定理 一个多项式f(x) 除以一线性多项式(x-a)的余式是 f(a)。
f(x)=x^n-1,f(x)/(x-1)的余式为f(1)=0,因此x^n-1都能被x-1分解。
附:利用余数定理进行因式分解
【代码】
#include<cstdio> #include<iostream> #include<algorithm> #include<cmath> using namespace std; int main(){ int T,p,ans; scanf("%d",&T); while(T--){ scanf("%d",&p); ans=0; for(int i=1;i*i<=p-1;i++){ if((p-1)%i==0){ if(i*i==p-1) ans++; else ans+=2; } } printf("%d\n",ans); } return 0; }
相关文章推荐
- 2017百度之星初赛(A) 1001 小C的倍数问题(基础数论)
- 2017百度之星初赛(A)1001 小C的倍数问题(求因子数)
- HDU 6108 2017 百度之星 初赛A 1001 小C的倍数问题
- 2017百度之星初赛:A-1001. 小C的倍数问题
- 百度之星2017初赛A轮 1001 小C的倍数问题
- 百度之星 2017初赛第一场 1001 小C的倍数问题
- 2017"百度之星"程序设计大赛 - 初赛(A)1001 小C的倍数问题(数学问题)
- 【 2017"百度之星"程序设计大赛 - 初赛(A)1001小C的倍数问题】
- hdu6108 2017"百度之星"初赛(A)1001小C的倍数问题(数学)
- 2017"百度之星"程序设计大赛 - 初赛(A)1001 小C的倍数问题
- 百度之星初赛(A)--小C的倍数问题----余数定理
- HDU 6108 小C的倍数问题 (数论 2017百度之星初赛A第1题)
- 【2017"百度之星"程序设计大赛 - 初赛(A)】小C的倍数问题
- 2017"百度之星"程序设计大赛 - 初赛(A)-1001.小C的倍数问题(HDU6108) 1005.今夕何夕-蔡勒公式 (HDU6112)
- 数学规律题 - 百度之星1001 小C的倍数问题
- 2017"百度之星"程序设计大赛 - 初赛(A) 小C的倍数问题
- 2017"百度之星"程序设计大赛 - 初赛- 小C的倍数问题
- 2017百度之星初赛(B) 1001 Chess(找规律+递推求组合数)
- HDU 6114 Chess(DP)2017百度之星初赛(B) 1001
- HDU 6108 小C的倍数问题 【数学】 (2017"百度之星"程序设计大赛 - 初赛(A))