题目链接:点击链接
思路:先转为十进制的数,在按照题目要求判断
本题转为进制的方法示例,如将八进制的231转换为十进制,
((0*8+2)*8+3)*8+1
=(2*8 + 3)*8 +1
= 2*8²+3*8+1
#include <stdio.h>
#include <string.h>
int main()
{
int n,b;//b表示进制
char s[100];
scanf("%d",&n);
while(n--)
{
while(scanf("%d",&b) && b)
{
scanf("%s",s);
int len = strlen(s);
int sum = 0,num = 0;
for(int i = 0 ; i < len ; i ++)
{
sum += s[i] - '0';
num = num * b + s[i] - '0';//转化为十进制
}
if(num % sum == 0) printf("yes\n");
else printf("no\n");
}
if(n) printf("\n");
}
return 0;
}