Codeforces-96-B(构造,字符串)

本文解析了Codeforces96B-LuckyNumbers(easy)题目的解题思路,介绍了如何寻找最小的只含4和7且两者数量相等、大于等于给定数n的数。通过将问题转化为字符串处理,利用next_permutation函数简化了构造符合条件字符串的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值