AT4159 [ABC101B] Digit Sums 题解

题意简述

给定一个整数 nn,求整数 nn 能否被它各个数位之和 S(n)S(n) 整除。

解题思路

初学者必备算法:数字拆分

非常简单,每次都将 nn 模 10 来取出这个数字的末位。

然后 nn 除 10 来使这个数字向前缩进一位。

这个东西的实现是基于 C++ 的一些特性。即 int 变量等若赋值为小数,则自动向下取整。

代码实现

#include<bits/stdc++.h>
using namespace std;
int n,sn,tmp;
int main() {
	scanf("%d",&n); tmp=n;
	while(tmp>=1) {
		sn+=tmp%10;
		tmp/=10;
	}
	if(n%sn!=0) printf("No");
	else printf("Yes");
	return 0;
}
//code by TheCedar