判断Niven Number程序,显示wrong answer(未解决)

13 篇文章 1 订阅

Problem Description

A Niven number is a number such that the sum of its digits divides itself. For example, 111 is a Niven number because the sum of its digits is 3, which divides 111. We can also specify a number in another base b, and a number in base b is a Niven number if the sum of its digits divides its value.
Given b (2 <= b <= 10) and a number in base b, determine whether it is a Niven number or not.

Input

Each line of input contains the base b, followed by a string of digits representing a positive integer in that base. There are no leading zeroes. The input is terminated by a line consisting of 0 alone.

Output

For each case, print “yes” on a line if the given number is a Niven number, and “no” otherwise.

Sample Input

10 111
2 110
10 123
6 1000
8 2314
0

Sample Output

yes
yes
no
yes
no

下面的程序命名能够正确运行,没有找到问题,结果一直是wrong answer。之后换了hoj 1014 Niven Numbers的程序结果正确运行了。这个程序和主流程序的不同仅仅是输入按照int,通过取余的方法获得每一位的数,而其他程序是直接转换为字符数组。通过输出每一个变量的方法判断,均符合预期,仍未找到问题所在。

#include <iostream>
#include<vector>
#include<stdio.h>
#include<stdlib.h>
using namespace std;

int intpow(int a,int b){
    if(b==0)return 1;
int n=a;
for(int i=b-1;i>0;i--){
    n*=a;
}
return n;
}

int main()
{
  //  vector<string> v;
    int b,n;
    while(scanf("%d",&b)&&b){
            scanf("%d",&n);
        int a[100];
        int i;
        int s=0;
        for(i=0;n!=0;i++){
            a[i]=n%10;
            n/=10;
        }
        for(i--;i>=0;i--){
           n+=a[i]*intpow(b,i);
           s+=a[i];
        }
        if(n%s==0)cout<<"yes"<<endl;//v.push_back("yes");
        else cout<<"no"<<endl;//v.push_back("no");
    }
   // vector<string>::iterator it;
 //   for(it=v.begin();it!=v.end();it++)cout<<*it<<endl;
    return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值