自测运行点对比显示一样,但过不了,显示实际输出与预期不一样

//从小数点后开始查找第1位>=5的数,循环执行t次 t=0或找不到就直接return
//五入操作: 找到>=5的数前面第一个不为9的数,将其+1. 后面的数全部记0(丢掉)  
//输出时判断是否有尾0  

#include<bits/stdc++.h>
#define FOR(i,a,b) for(int i = a; i <= b; i++)
const int maxn = 200005;

using namespace std;

long long n,t,pos;
string xs;

void ru(int start) // start 是第一个>=5的数
{
    int plus;
    for(plus = start-1; plus >= 0; plus--)
        if(xs[plus] != '9') break;
    xs[plus] += 1;
    
    FOR(i, start, xs.length()-1)
        xs[i] = 0;
}

void deal(int tt)
{
    if(tt == 0) return;

    int i = pos+1; //小数点查找开始位置
    while(xs[i] < '5' && xs[i] >= '0' && i < xs.length()) i++; //找第一个5的数
    if(i == xs.length()) return; //没找到>=5的数
    
    ru(i);
    deal(tt-1);

}

int main()
{
    cin>>n>>t;
    cin>>xs;
    
    pos = xs.find('.'); //小数点位置

    deal(t);

    int i = xs.length()-1;
    while(xs[i] == '0')
    {
//        xs.erase(i);
        i--;
    }

    FOR(j,0,i)
        cout<<xs[j];
}
代码见上
点对比一样,就是过不了
这是什么问题啊
全部评论
 = =我说一下我特判出来的,一种是类似999.99这样的数还有是00000这样的整数特判判一下就好
点赞 回复 分享
发布于 2022-10-23 11:21 山东

相关推荐

06-07 00:00
已编辑
腾讯_后端开发
点赞 评论 收藏
分享
水墨不写bug:疑似没有上过大学
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-24 13:39
在记录秋招的大魔王很...:别被忽悠了,我做了多年销售。我可以告诉你,这就是忽悠你的,销售一定要看底薪也要看提成两者不可缺一。提成是有业绩的时候才拿的到的,谁能保证一直有单状态都好。销售有时候很讲究运气的。底薪是你这个人这个岗位日常工作体现的价值。别小看底薪,你看那些跳槽去做经理主管的,底薪底一些,人家愿意去吗?所以那些说销售靠提成的纯属忽悠,除非他们的业务很容易成单。
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务