毕左二少 2023-01-07 19:17 采纳率: 100%
浏览 43
已结题

【C++】代码为何出错?

题目

题目背景:

现在有一个整数A( 0 < A ≤ 1000000000)

输入格式

一行一个正整数A。

输出格式

一行一个正整数。

样例

样例输入1

125

样例输出1

3

样例输入2

305160

样例输出2

2

数据范围与提示

时间限制:1s1s

空间限制:512MB

代码

#include<bits/stdc++.h>
using namespace std;
int ws(int i){
    long long x;
    for(x=0;i>0;x++){
        i/=10;
    }
    return x;
}
int main(){
    int a,ans=0;
    cin>>a;
    if(a%10==5){
        for(int z=1;z<=a;z++){
            if(a%5==0){
                a/=5;
            }else{
                cout<<z;
                return 0;
            }
        }
    }else{
        for(int z=1;z<=ws(a);z++){
            int m=pow(10,z);
            if(a%m/pow(10,z-2)==0){
                ans++;
            }
        }
        cout<<ans;
        return 0;
    }
    return 0;
}

问题:第二种情况0数量统计不准确。

如:输入305160时,输出1。(×)

输入1000时,输出3。(√)

输入10001时,输出0。(×)

我:我是写代码的,还能输给你生0蛋子?

电脑:你这0包熟吗?

请帮忙看看谢谢!

orz!

  • 写回答

3条回答 默认 最新

  • a5156520 2023-01-07 19:42
    关注

    可能是对于0的数量的统计的判断过于复杂了,可以每次进行a对10求余求出个位数是否为0,逐个数位进行判断即可,修改如下:

    #include<bits/stdc++.h>
    using namespace std;
    int ws(int i){
        long long x;
        for(x=0;i>0;x++){
            i/=10;
        }
        return x;
    }
    int main(){
        int a,ans=0;
        cin>>a;
        if(a%10==5){
            for(int z=1;z<=a;z++){
                if(a%5==0){
                    a/=5;
                }else{
                    cout<<z;
                    return 0;
                }
            }
        }else{
            
    //        for(int z=1;z<=ws(a);z++){
    //            int m=pow(10,z);
    //            if(a%m/pow(10,z-1)==0){
    //                
    //                ans++;
    //                printf("ws(a)=%d,pow(10,z-1)=%d,m=%d,a%%m/pow(10,z-1)=%d,ans=%d\n",ws(a),pow(10,z-1),m,a%m/pow(10,z-1),ans);
    //            }
    //        }
    
                if(a==0){
                    ans=1;
                }else{
                    int single = a%10;
                    while(a!=0){
                        if(single==0){
                            ans++;
                        }
                        a=a/10;
                        single = a%10;
                    }
                }
                
                
            cout<<ans;
            return 0;
        }
        return 0;
    }
    

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 1月7日
  • 已采纳回答 1月7日
  • 创建了问题 1月7日

悬赏问题

  • ¥50 yalmip+Gurobi
  • ¥20 win10修改放大文本以及缩放与布局后蓝屏无法正常进入桌面
  • ¥15 angular开发过程中,想要读取模型文件,即图1的335行,会报404错误(如图2)。但我的springboot里配置了静态资源文件,如图3。且在该地址下我有模型文件如图4,请问该问题该如何解决呢?
  • ¥15 itunes恢复数据最后一步发生错误
  • ¥15 关于#windows#的问题:2024年5月15日的win11更新后资源管理器没有地址栏了顶部的地址栏和文件搜索都消失了
  • ¥100 H5网页如何调用微信扫一扫功能?
  • ¥15 讲解电路图,付费求解
  • ¥15 有偿请教计算电磁学的问题涉及到空间中时域UTD和FDTD算法结合的
  • ¥15 vite打包后,页面出现h.createElement is not a function,但本地运行正常
  • ¥15 Java,消息推送配置