You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C++判断数字能否被各位和整除的代码问题求助

问题分析与解决

你的核心问题出在字符到数字的转换逻辑上:s[i-1]是char类型,直接加到a里时,实际累加的是该字符的ASCII码值,而非对应的数字本身。

比如测试数字12时:

  • s的值是"12",s[0]是字符'1'(ASCII码49),s[1]是字符'2'(ASCII码50)
  • 循环执行后a = 49 + 50 = 99
  • 12 % 99 = 12 ≠ 0,所以输出NO,和预期不符

修正代码

只需要在累加时把字符转换为对应的数字,方法是减去字符'0'(ASCII码48),这样'1'-'0'=1,'2'-'0'=2,就能得到正确的数字值:

#include <bits/stdc++.h>
using namespace std;

int main() {
    long long n, a=0;
    string s;
    cin>>n;
    s=to_string(n);
    for (long long i=1; i<=s.size(); i++){
        a = a + (s[i-1] - '0'); // 减去'0'完成字符到数字的转换
    }
    if (n%a==0){cout<<"YES";}
    else {cout<<"NO";}
    return 0;
}

测试数字12时,a会计算为1+2=3,12%3=0,输出YES,符合预期。

内容的提问来源于stack exchange,提问作者Anh Trí Hoàng

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 00:12:05