求指教,那里错了

B2078 含 k 个 3 的数

zsms1996 @ 2024-12-24 14:59:30

#include <bits/stdc++.h>
using namespace std;
int main()
{
    long long m;
    int k,a=0;
    cin>>m>>k;
    for(int i=1;(m/10)!=0;i++)
    {
        if(m%10==3)a++;
        m=m/10;
    }
    if(k==a)cout<<"YES";
    else cout<<"NO";
    return 0;
}

by iceeci @ 2024-12-24 15:08:09

在for循环语句中不能写成“(m/10)!=0” 因为当数字为3时由于m=3,m/10=0 循环会立马终止,无法再计数。应写为m!=0


by exCat @ 2024-12-24 15:09:00

#include <bits/stdc++.h>
using namespace std;
int main()
{
    long long m;
    int k,a=0;
    cin>>m>>k;
    for(int i=1;m!=0;i++)//问题在这
    {
        if(m%10==3)a++;
        m=m/10;
    }
    if(k==a)cout<<"YES";
    else cout<<"NO";
    return 0;
}

by exCat @ 2024-12-24 15:10:09

@zsms1996

像你那样写,判不到最后以为,小于10的时候就直接结束了。


by yuhanlinluogu @ 2024-12-24 15:34:47

少循环了一次

#include<stdio.h>
int main(){
    long long m;
    int k,a=0;
    scanf("%lld %d",&m,&k);
    for(int i=1;m;++i){
        if(m%10==3)++a;
        m/=10;
    }
    if(k==a)puts("YES");
    else puts("NO");
    return 0;
}

|