niven数

一个Niven数就是一个它的各位数字之和能整除它本身的数,
例如:111是Niven数。因为111 mod (1+1+1)=0。
同样地, 在其他数制,我们仍能有这样的Niven数。
例如:二进制数  1010是Niven数,因为:二进制数1010转为十进制后是10,而10 mod(1+0+1+0)=0;

Input

每个测试数据占一行,先是数制b,之后是一个合法的数制中的数。
b为0表示测试块结束。

Output

如果该数在该数制为Niven数,就输出"yes",否则输出"no"。
两个测试块之间用空行隔开。

Sample Input
10 111
2 110
10 123
6 1000
8 2314
0
Sample Output
yes
yes
no
yes
no


 
给出 数制b (2<=b<=10) 和一个b数制的数,你要判断这个数是否是Niven数。
输入数据包含多组数据。

#include<bits/stdc++.h>
using namespace std;
int main()
{
	char a[1005];
	int b;
	while(cin>>b&&b!=0)
	{
		cin>>a;
		long long int n=0,sum=0;
		for(int i=0;i<strlen(a);i++)
		{
			sum+=a[i]-'0';
			n=a[i]-'0'+n*b;
		}
		if(n%sum==0)
		cout<<"yes"<<endl;
		else
		cout<<"no"<<endl;
	}
	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值