D题有没有大佬给我点hack数据

#include <iostream>
#include <cstring>
#include <algorithm>
#include <string>
#include <cstring>
#include <math.h>
#include <queue>
#include <vector>
#include <set>
#include <map> 

#define int long long

using namespace std;
typedef pair<int, int> PII;

const int N = 1e6 + 10, M = 1e6 + 10, INF = 0x3f3f3f3f, mod = 1e9 + 7;

int n, m;
int a[N];

string s;
char ans[N];
int cnt[10];

void solve() 
{
    cin >> s;
    n = s.size();
    for(int i = 0; i < n; i++) cnt[s[i] - '0']++;
    
    bool flag = false;
    if(n >= 3 && s[0] == '9' && s[1] == '9' && s[2] == '9') flag = true;
    if(n >= 4 && s[0] == '9' && s[1] == '9' && s[2] == '8' && s[3] == '9') flag = true;
    //if(n >= 6 && s[0] == '9' && s[1] == '9' && s[2] == '8' && s[3] == '8') flag = true;
    if(n & 1 || (cnt[9] == n && n > 2) || flag)
    {
        for(int i = 1; i <= n / 2 + 1; i++) 
        {
            if(i & 1) cout << "11";
            else cout << "00";
        }
        return;
    }
    
    int pre = -1;
    int k = 0;
    // 889999
    for(int i = 0; i < n; i += 2)
    {
        int a = s[i] - '0', b = s[i + 1] - '0';
        
        if(a == b) 
        {
            if(i + 5 < n)
            {
                // cout << "?";
                int tot = 0, bb = 0;
                for(int j = i + 2; j <= i + 5; j++)
                {
                    if(s[j] == '9') tot++;
                    if(s[j] == '8') bb ++;
                }
                    
                bool is = false;
                if(i + 9 < n) 
                {
                    
                    if((s[i + 2] == '9' && s[i + 3] == '9' && s[i + 4] == '8' && s[i + 5] == '8'))
                    {
                        
                        if(s[i + 6] == '9' && s[i + 7] == '9')
                        {
                            if(s[i + 8] =='8' && s[i + 9] == '9') is = true;
                            if(s[i + 9] =='8' && s[i + 8] == '9') is = true;
                            if(s[i + 8] =='9' && s[i + 9] == '9') is = true;
                        }
                    }
                    
                }
                // cout << is << endl;
                if(tot == 4 || (tot == 3 && (s[i + 5] == '8' || s[i + 4] == '8')) || is)
                {
                    // if(pre == -1)
                    if(a + 1 != pre) pre = a + 1;
                    else pre = a + 2; 
                    k = i + 2;
                    cout << pre << pre; 
                    // cout << "?";
                    break;
                }
            }
            if(a != pre) pre = a;
            else pre = a + 1, k = i + 2; 
            // cout << pre << endl;
            cout << pre << pre; 
            
        }
        else if(a != b)
        {
            if(a > b) 
            {
                if(a == pre) pre = a + 1;
                else pre = a;
            }
            else 
            {
                if(pre == a + 1) pre = a + 2;
                else pre = a + 1;
                
            }
            k = i + 2;
            cout << pre << pre;
        }
        if(k) break;
    }
    if(k == 0) return;
    
    for(int j = 1;k < n; k += 2, j++)
        if(j & 1) cout << "00";
        else cout << "11";
}

signed main() 
{
    int T = 1;
    // cin >> T;
    while (T--) 
    {
        solve();
    }
    return 0;
}

除了这个数据 99889999

全部评论
1122334467 999 1234567890
点赞 回复 分享
发布于 01-06 10:48 山西

相关推荐

CARLJOSEPH...:宝宝你戾气太大了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务