高级守护
题目链接: 酷町堂:10088
#include <iostream>
#include <algorithm>
#include <cstdio>
#include <cmath>
#include <iomanip>
#include <stdio.h>
#include <string>
#include <cstring>
using namespace std;
int n;
string s;
bool f(){
int sum=0;
for(int i=0;i<=s.length()-1;i++){
sum+=s[i]-'0';
}
if(sum%3==0){
return true;
}
return false;
}
bool f8(){
int sum=0;
int t=s.size()-3;
for(int i=max(t,0);i<s.length();i++){
sum=sum*10+s[i]-'0';
}
return sum%8==0;
}
bool f88(){
int t=s.size()-3;
for(int i=max(t,0);i<s.length();i++){
for(int j=0;j<s.length();j++){
swap(s[i],s[j]);
if(f8()){
return true;
}
swap(s[i],s[j]);
}
}
return false;
}
int main(){
cin>>n;
for(int i=1;i<=n;i++){
cin>>s;
//cout<<f()<<" "<<f8()<<" "<<f88()<<endl;
if(f()&&f8()||f88()){
cout<<"Yes"<<endl;
}else{
cout<<"No"<<endl;
}
}
return 0;
}
样例最后一个数不对;