题目描述
如果一个十进制整数能够被它的每一个非零数码整除,则称它为巧妙的数,譬如 102 是一个巧妙的数,因为 102 能被 1 与 2 整除,而 2021 不是,因为它不能被 22整除。给定一个 n,请判定它是否为巧妙的数。
输入格式
单个整数:表示 n。
输出格式
- 如果 n 是一个巧妙的数,输出
clever
; - 否则,输出
not clever
。
数据范围
- 对于 30%的数据,1≤n≤109;
- 对于 60%的数据,1≤n≤1018;
- 对于 100的数据,1≤n≤101000。
样例数据
输入:
102
输出:
clever
输入:
2050
输出:
clever
输入:
13
输出:
not clever
题解
本题关键点: 模拟法进行计算,代码如下。
cpp
#include<iostream>
#include <string>
using namespace std;
int main() {
int a[10];
int num[1010];
string s;
cin>>s;
int len = s.size();
bool result = true;
for(int i = 0;i < s.size();i ++)
{
num[i] = s[i] - '0';
a[num[i]] ++;
}
for(int j = 1;j <= 9;j ++){
if(a[j]) {
int x = 0;
for(int i = 0;i < len;i ++){
x = x * 10 + num[i];
x = x % j;
}
if(x != 0) {
result = false;
break;
}
}
}
if(result) {
cout << "clever" ;
}else {
cout << "not clever";
}
return 0;
}