一个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;
}