2017百度之星初赛:A-1001. 小C的倍数问题

探讨了在P进制中,找出所有满足一个数的每位数字之和为B的倍数,则该数也是B的倍数的条件。通过算法实现了求解过程,并提供了具体的实现代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

小C的倍数问题

 
 Accepts: 1990
 
 Submissions: 4931
 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 Input
1
10
Sample Output
3


答案就是P-1的因子个数,也就是满足P%x==1,x的数量加上数字1

#include<stdio.h>
int main(void)
{
	int T, p, i, ans;
	scanf("%d", &T);
	while(T--)
	{
		scanf("%d", &p);
		p -= 1, ans = 0;
		for(i=1;i*i<=p;i++)
		{
			if(p%i==0)
			{
				if(i*i==p)
					ans++;
				else
					ans += 2;
			}
		}
		printf("%d\n", ans);
	}
	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值