80求助

B2078 含 k 个 3 的数

a1329425635 @ 2024-10-20 15:55:30

刚学没多久,写的不是很好,细节也不是很好,但我思路没问题,我让ai帮我找错也找不到错在哪里,一直优化流程,但上传上去还是一直有两个报错,希望有大佬能帮我看看。 思路是对符合题目取值范围的m进行循环,然后通过m/i求得m的最高位数赋值给a,然后比较a是否为3,是就令sum+1,然后通过m-a*i去掉m的最高位数,然后继续循环,直到i=0.

#include <iostream>
#using namespace std;
 int main()
{
    long long m,k,a;
    int sum = 0;
    cin >> m;
    cin >> k;
    if (m <= 1000000000000000 && k <= 15 && k>1 && m>1)
    {
        long long i = 1000000000000000;
        while ( i > 0)
        {
            if (i < m)
            {
                a = m / i;
                if (a == 3)
                {
                    sum++;
                }
                m = m - a * i;
            }
            i =i/ 10;
        }
        if (sum == k)
        {
            cout << "YES" << endl;
        }
        else
        {
            cout << "NO" << endl;
        }
    }
    else
    {
        cout << "NO" << endl;
    }
    return 0;
}

by _lxc__ @ 2024-10-20 15:59:14

虽然我没看懂你写的代码,但我可以给你一份AC代码:

#include<bits/stdc++.h>
using namespace std;
int m,k,cnt=0;
int main(){
    cin>>m>>k;  //输入
    while(m){   //拆位
        if(m%10==3) ans++;   //判断当前位是否为3
        m/=10;
    }
    if(ans==k) cout<<"YES";   //输出
    else cout<<"NO";
    return 0;
}

by a1329425635 @ 2024-10-20 19:07:56

@_lxc___ 谢谢你,我已经向别人请教过正确代码来,发帖的原因主要是想要看看我到底是哪里出了问题。


by GAOXINGYI0703 @ 2024-10-21 14:01:16

@_lxc___请问代码编译过了吗,橙名大佬


by GAOXINGYI0703 @ 2024-10-21 14:02:07

@lxc___请问代码编译过了吗,橙名大佬


by yangyang1013 @ 2024-12-20 20:43:18

tt


|