Codeforces 96B-Lucky Numbers (easy)
题目原址
[http://codeforces.com/problemset/problem/96/B]
题意
给定一个数 n ,找出最小的只含 4 和 7 并且它们数量相等的大于等于 n的数。
题解
把它当作字符串处理,构造出符合条件的字符串,用 next_permutation 函数会简单很多。
(C++灵活得要死,就是有时候慢)
实现
#include <iostream>
#include <algorithm>
using namespace std;
string a[5]={"47","4477","444777","44447777","4444477777"};
int i,j,k;
int main(){
string s;
cin >> s;
for(i=0;i<5;i++){
do
if((a[i]>=s&&a[i].length()==s.length())||a[i].length()>s.length())
goto a;//长度相同且字典序大,或长度大
while(next_permutation(a[i].begin(),a[i].end()));
}
a: cout<<a[i]<<endl;
}