1 条题解

  • 0
    @ 2025-8-24 21:22:09

    自动搬运

    查看原文

    来自洛谷,原作者为

    avatar 亿年已过
    0.0

    搬运于2025-08-24 21:22:08,当前版本为作者最后更新于2019-09-25 13:55:56,作者可能在搬运后再次修改,您可在原文处查看最新版

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

    以下是正文


    蒟蒻的第三篇题解!

    相对来说,这一题还是比较简单的。

    主要就是考数字拆分

    for(int i=L;i<=R;i++)	//从L到R这个范围中找数字2
    {
        x=i;		//用x来装i的值
        while(x>0)	//只要x大于0就运行下面的程序
        {
            if(x%10==2)ans++;	//如果i某一位的数字是2,ans++
            x/=10;	//准备好下一位数字的判断
        }
    }
    

    下面这一段程序的解释

        while(x>0)
        {
            if(x%10==2)ans++;
            x/=10;	
        }
    

    注:假设x=123

    第一次运行:

    x>0,所以运行下面程序 x%10==3 所以ans不加 x/=10 x=12

    第二次运行:

    x>0,所以运行下面程序 x%10==2 所以ans++ x/=10 x=1

    第三次运行:

    x>0,所以运行下面程序 x%10==1 所以ans不加 x/=10 x=0

    第四次运行:

    x==0,所以不运行下面程序

    AC代码

    #include<bits/stdc++.h>    //万能头文件
    using namespace std;
    
    int L,R,x,ans;           
    int main()
    {
    scanf("%d%d",&L,&R);//输入
    for(int i=L;i<=R;i++)	//从L到R这个范围中找数字2
    {
        x=i;		//用x来装i的值
        while(x>0)	//只要x大于0就运行下面的程序
        {
            if(x%10==2)ans++;	//如果i某一位的数字是2,ans++
            x/=10;	//准备好下一位数字的判断
        }
    }
    printf("%d",ans);//输出
    
        return 0;           
    }
    
    • 1

    信息

    ID
    180
    时间
    1000ms
    内存
    125MiB
    难度
    1
    标签
    递交数
    0
    已通过
    0
    上传者