cin>>s; 若s串=1236
lens=s.size(),pd=1,ys=0,p[10]={}
0<=i< l
开始运算:
P[1]=p[2]=p[3]=p[6]=true; //下标做标记
若 p[6]=ture,则p[2]=p[3]=ture,p[6]=false
pd=1 9>=k>1
若pd%k!=0&&p[k]=ture时,则pd*=k;
1%9!=0&&p[9] 不成立
……
1%4!=0&&p[4] 不成立
1%3!=0&&p[3] 成立
进入分支 pd*=3 此时 pd=3
3%2!=0&&p[2] 成立
进入分支 pd*=2 此时 pd=6
随后进行分段计算——
10*0+1=1 1%pd==1
10*1+2=12 12%pd==0
10*0+3=3 3%pd==3
10*3+6=36 36%pd==0
最后判断pd是否为0
为0输出clever
否则退出not clever
#include<bits/stdc++.h>
#define int long long
using namespace std;
signed main(){
string s;
cin>>s;
int l=s.size(),pd=1,ys=0;
bool p[10]={};
for(int i=0;i<l;i++)
p[s[i]-'0']=true;
if(p[6])p[2]=p[3]=true,p[6]=false;
for(int i=9;i>1;i--)
if(pd%i!=0&&p[i])pd*=i;
for(int i=0;i<l;i++){
ys=ys*10+s[i]-'0',ys%=pd;
}if(ys==0)cout<<"clever";
else cout<<"not clever";
}