栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

zoj 3327 Friend Number

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

zoj 3327 Friend Number

#include<cstdio>#include<cstring>#include<algorithm>#include<iostream>#include<queue>#define maxn 310using namespace std;string s;int prime[20];void get(int x){ if(x==9)prime[3]+=2; else if(x==8)prime[2]+=3; else if(x==7)prime[7]++; else if(x==6)prime[2]++,prime[3]++; else if(x==5)prime[5]++; else if(x==4)prime[2]+=2; else if(x==3)prime[3]++; else if(x==2)prime[2]++;}bool can(int x){ if(x==9&′[3]>=2) { prime[3]-=2; return 1; } else if(x==8&′[2]>=3) { prime[2]-=3; return 1; } else if(x==7&′[7]>=1) { prime[7]--; return 1; } else if(x==6&′[2]>=1&′[3]>=1) { prime[2]--,prime[3]--; return 1; } else if(x==5&′[5]>=1) { prime[5]--; return 1; } else if(x==4&′[2]>=2) { prime[2]-=2; return 1; } else if(x==3&′[3]>=1) { prime[3]--; return 1; } else if(x==2&′[2]>=1) { prime[2]--; return 1; } return 0;}int change(){ if(prime[3]>=2) { prime[3]-=2; return 9; } if(prime[2]>=3) { prime[2]-=3; return 8; } if(prime[7]>=1) { prime[7]--; return 7; } if(prime[2]>=1&′[3]>=1) { prime[2]--,prime[3]--; return 6; } if(prime[5]>=1) { prime[5]--; return 5; } if(prime[2]>=2) { prime[2]-=2; return 4; } if(prime[3]>=1) { prime[3]--; return 3; } if(prime[2]>=1) { prime[2]--; return 2; } return 1;}void solve(){ int i,j; memset(prime,0,sizeof(prime)); int ff=0; for(i=0; i<s.size(); i++) { get(s[i]-'0'); int flag=0; for(j=s[i]-'0'+1; j<=9; j++) { if(can(j)) { flag=1; break; } } if(flag) { ff=1; s[i]=j+'0'; break; } } if(ff) { int tt=i; for(i=0; i<tt; i++) { s[i]=change()+'0'; } } else { s+="1"; for(i=0; i<s.size()-1; i++) { s[i]=change()+'0'; } }}bool find_zero(int& num){ int i,j; int flag=0; for(i=0; i<s.size(); i++) { if(s[i]=='0') { num++; flag=1; } } return flag;}int main(){ int i,j; int T; scanf("%d",&T); while(T--) { cin>>s; reverse(s.begin(),s.end()); if(s.size()==1) { cout<<1<<s[0]<<endl; continue; } int num=0; if(!find_zero(num)) { solve(); } else { if(num==1&&s[0]=='0') { for(i=1; i<s.size(); i++) { if(s[i]=='9') { s[i]='0'; } else { s[i]++; break; } } if(s[s.size()-1]=='0') { s+="1"; } } else { for(i=0; i<s.size(); i++) { if(s[i]=='9') { s[i]='0'; } else { s[i]++; break; } } } } reverse(s.begin(),s.end()); cout<<s<<endl; } return 0;}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/369727.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号