1 条题解

  • 0
    @ 2025-8-24 23:15:04

    自动搬运

    查看原文

    来自洛谷,原作者为

    avatar HZY1618yzh
    /team/99897给个壶把关注,五年级蒟蒻很不容易的呢!三同号:13326943565

    搬运于2025-08-24 23:15:04,当前版本为作者最后更新于2025-04-28 16:17:29,作者可能在搬运后再次修改,您可在原文处查看最新版

    自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多

    以下是正文


    本题暴力+模拟就能过。

    思路

    首先,枚举 12345678123456789876543298765432 的所有数,倒序分解数位后用快慢指针看看是否满足条件。

    倒序分解数位可以通过每次不断把枚举到的数一直取余十,但一直取余十会把 ii 清零,所以要用一个 zz 变量储存 ii 的值。

    那如何判断是否满足条件呢?先看看条件的代码翻译:如果 ii 的数码不包含按顺序的 20232023,则 ansans 增加一。我们可以不断判断第快指针个数位是否是 20232023 的第慢指针个数位,如果是,慢指针加一。当慢指针大于三的时候,即概数有 20232023 这四个数,所以跳出循环。最后看看慢指针是否是四就能知道是否包含 20232023

    代码

    #include<bits/stdc++.h>
    using namespace std;
    int a[]={2,0,2,3},top,ans;
    int main(){
        for(int i=12345678;i<=98765432;i++){
        	top=0;
    		int z=i,now[8]={},cnt=0;
    		while(z){
    			now[cnt++]=z%10;
    			z/=10;
    		}
    		for(int i=cnt;i>=0;i--)
    			if(now[i]==a[top]){
    				top++;
    				if(top>3) break;
    			}
    		if(top>3) continue;
    		ans++;
    	}
    	cout<<ans;
        return 0;
    }
    

    ~给个一键三连吧!~

    • 1

    信息

    ID
    12195
    时间
    10000ms
    内存
    512MiB
    难度
    2
    标签
    递交数
    0
    已通过
    0
    上传者