likangxin123 2023-07-19 14:46 采纳率: 33.3%
浏览 88
已结题

这道世纪难题,谁能用c++写

img


题目描述
给你一个数字(可能含有前导0),你可以执行操作:

交换两个数位(不需要相邻)
把这个数字减1
至少需要多少次操作,才可以使其变为0。

输入格式
第一行一个整数

(
1



1000
)
t(1≤t≤1000)表示测试用例的数量。 对于每个测试用例第一行包含一个整数

(
1



100
)
n(1≤n≤100)表示这个整数有多少位。 第二行表示包含一个字符串

s表示这个整数(可能含有前导0)。

输出格式
对于每个测试用例输出一个整数表示最少的操作次数。

样例
输入数据 1
7
3
007
4
1000
5
00000
3
103
4
2020
9
123456789
30
001678294039710047203946100020
输出数据 1
7
2
0
5
6
53
115
样例解释
对于第一个样例,显然执行减1操作7次即可。 第二个样例,先把首位的1和末尾的0交换位置,然后再执行一次减1操作,一共两次操作。
谁能做出来这道世纪难题

  • 写回答

2条回答 默认 最新

  • weixin_43321370 2023-07-19 22:02
    关注

    题目目的就是把各个位上不为0的数字移到个位上然后依次减1使其整体最后变成0。
    其中移动的次数是除个位其他位上值不为0的个数,减1的次数为数据各个位上值的总和。

    #include<iostream>
    #include<math.h>
    using namespace std;
    #define VALUEMAX 100
    
    typedef struct dataInfo{
        int digit;
        char value[VALUEMAX];
    };
    int main()
    {
    
        int step = 0;
        dataInfo arr[10]={};
        int i = 0,j = 0;
        int size = 0;
    
        // 接收一共要处理几组数据
        cin>>size;
        // 循环接收数据
        for(i = 0;i<size;i++){
            cin>>arr[i].digit;    // 保存数据有几位
            for(j = 0;j<arr[i].digit;j++){
                cin>>arr[i].value[j];    // 保存实际数据
            }
        }
    
        // 操作2就是数据各个位上值的总和
        // 操作1为除个位上值不为0的个数
    
        for(i = 0;i<size;i++){
            step = 0;
            for(j = 0;j<arr[i].digit;j++){    // 按位循环
                if(arr[i].value[j] != '0'){    // 如果当前位不是0的话
                    step += int(arr[i].value[j]-'0')+1;    // 累加(并且先默认都不是个位,将操作1需要+1也加进去)
                }
            }
            if(arr[i].value[j-1] != '0'){    // 将之前累加时多加的值减去(个位为未零的情况)
                step--;
            }
            cout<<step<<endl;    // 输出
        }
    
        return 0;
    }
    
    

    运行截图

    img

    本回答被专家选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 7月30日
  • 专家已采纳回答 7月22日
  • 创建了问题 7月19日

悬赏问题

  • ¥15 【求职】怎么找到一个周围人素质都很高不会欺负他人,并且未来月薪能够达到一万以上(技术岗)的工作?希望可以收到写有具体,可靠,已经实践过了的路径的回答?
  • ¥15 Java+vue部署版本反编译
  • ¥100 对反编译和ai熟悉的开发者。
  • ¥15 带序列特征的多输出预测模型
  • ¥15 Python 如何安装 distutils模块
  • ¥15 关于#网络#的问题:网络是从楼上引一根网线下来,接了2台傻瓜交换机,也更换了ip还是不行
  • ¥15 资源泄露软件闪退怎么解决?
  • ¥15 CCF-CSP 2023 第三题 解压缩(50%)
  • ¥30 comfyui openpose报错
  • ¥20 Wpf Datarid单元格闪烁效果的实现