费用流之最大权不相交路径

给定一个不超过100位非负整数n,不包含前导0,你的任务是确定是否能删除原数中的某些数字(可能不需要删除任何数字)以便结果至少包含一位数字,且为非负整数且没有前导0,并且能被8整除,删除后不能对数字进行重新排序。友情提示:末尾3位能被8整除的数就能被8整除。 如果存在解决方案请打印出来。

Input

第一行输入一个不超过100位的非负整数n

Output

如果通过操作可以得到这样一个数字那么在第一行输出YES,然后在第二行输出该整数,否则输出NO,答案可能有多个输出其中一个即可

Sample 1

Inputcopy

Outputcopy

3454

YES

344

Sample 2

Inputcopy

Outputcopy

10

YES

0

Sample 3

Inputcopy

Outputcopy

111111

NO

#include<iostream>//f

#include<cstring>

using namespace std;

int main(){

char a[101];

cin>>a;int k=0;

for(int i=0;i<strlen(a);i++){

if(a[i]=='0'){

cout<<"YES"<<endl;

cout<<"0"<<endl;

k=1;

return 0;

}

}

for(int i=0;i<strlen(a);i++){

for(int j=i+1;j<strlen(a);j++){

for(int z=j+1;z<strlen(a);z++){

if(((a[i]-'0')*100+(a[j]-'0')*10+(a[z]-'0'))%8==0){

cout<<"YES"<<endl;

cout<<a[i]<<a[j]<<a[z]<<endl;

k=1;

return 0;

}

}

if(((a[i]-'0')*10+a[j]-'0')%8==0)

{

cout<<"YES"<<endl;

cout<<a[i]<<a[j];

return 0;

}

}

if((a[i]-'0')%8==0)

{

cout<<"YES"<<endl;

cout<<a[i];

return 0;

}

}

cout<<"NO"<<endl;

return 0;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值