c++简单程序出错,求纠正

题目如图,程序如下,程序一直出错,求解答

img

#include<bits/c++.h>
using namespace std;
int main(){
int m;
int k,ans=0;
cin>>m>>k;
if(m%19!=0 || m==0){
cout<<"NO";
return 0;
}
while(m/10!=0){
if(m%10==3) ans++;
m/=10;
}
if(ans==k) cout<<"YES";
else cout<<"NO";
return 0;
}


#include<iostream>
using namespace std;
int main()
{
    int m;
    int  k;
    cout << "请输入一个整数:" << endl;
    cin >> m;
    cout << "请输入1-5之间的一个数:" << endl;
    cin >> k;
    if (m % 19 == 0 && k * (m / 3) == m)
    {
        cout << "YES" << endl;
    }
    else
    {
        cout << "No" << endl;
    }

}

这个难点就在于求3的个数,如果我们细心发现,会找到一个规律。
就是m/3*k=m的,你要不信有两个案列,第一个输出yes,第二个输出no.
这个规律把握住就好了.
加油


int main()
{
    int m, k, ans = 0;
    cin >> m >> k;
    if (m % 19 != 0 || m == 0)
    {
        cout << "NO";
        return 0;
    }
    int x;
    while (m != 0) // while (m / 10 != 0) //
    {
        x = m % 10;
        cout << x << endl;
        if (m % 10 == 3)
            ans++;
        m /= 10;
    }
    if (ans == k)
        cout << "YES";
    else
        cout << "NO";
    return 0;
}

#include <iostream>
using namespace std;
int main(){
    int m;
    int k,ans=0;
    cout << "please input two int value m (1 < m < 100000), k (1 < k < 5): ";
    cin>>m>>k;
    if (m <= 1 || m >= 100000)
    {
        cout << "NO\n";
        return -1;
    }

    if (k <= 1 || k >= 5)
    {
        cout << "NO\n";
        return -1;
    }

    if(m%19 != 0){
        cout<<"NO\n";
        return 0;
    }
    while(m != 0)
    {
        if (m%10 == 3)
            ans++;
        m /= 10;
    }
    
    if(ans==k) 
        cout<<"YES\n";
    else 
        cout<<"NO\n";

    return 0;
}

img