.在A十B中插入十号

A+Bproblem
描述

小明有一个很大的数字,现在他想要在这个数字中间插入一个+号,来求出这个数的结果,并且他还想知道,这些数中哪个数末尾0最多。

day06-02.zip

输入
第一行一个整数T(t<=100)表示数据组数

接下来有T行,每行一个数字字符(长度在10^5,最高位不为0)

输出
T行,每行一个整数,表示0最多有多少个

输入样例 1

2
2017
44445555
输出样例 1

0
3

#include <stdio.h>
 
int countzero(int x)
{
    int r = 0;
    while (1)
    {
        if (x % 10 != 0) break;
        r++;
        x /= 10;
    }
    return r;
}
 
int foo(int x)
{
    int base = 10;
    int max = countzero(x / 10 + x % 10);
    while (x / base != 0)
    {
        int num1 = x / base;
        int num2 = x % base;
        if (countzero(num1 + num2) > max) max = countzero(num1 + num2) > max;
        base *= 10;
    }
    return max;
}
 
int main()
{
    int n;
    for (int i = 0; i < n; i++)
    {
        int x;
        scanf("%d", &x);
        int result = foo(x);
        printf("%d\n", result);
    }
    return 0;
}
 

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632

【以下回答由 GPT 生成】

解决方案

首先,我们需要编写一个函数来计算一个整数末尾0的个数。这可以通过循环将整数除以10,并在每次除法后计数0的个数来实现。直到整数不再能被10整除为止。

def count_zeros(num):
    count = 0
    while num % 10 == 0:
        count += 1
        num = num // 10
    return count

接下来,我们需要编写一个函数来在一个数字中间插入一个+号,并计算结果。这可以通过将数字转换为字符串,插入+号,然后将结果再转换为整数来实现。

def insert_plus(num):
    str_num = str(num)
    middle = len(str_num) // 2
    new_str_num = str_num[:middle] + '+' + str_num[middle:]
    return int(new_str_num)

最后,我们编写主函数来解决问题。

首先,我们需要读取输入的数据组数。

T = int(input())

然后,我们循环读取每个数字,并分别调用插入+号和计算末尾0数的函数。最后将结果打印出来。

for _ in range(T):
    num = int(input())
    new_num = insert_plus(num)
    zeros = count_zeros(new_num)
    print(zeros)

完整的代码如下:

def count_zeros(num):
    count = 0
    while num % 10 == 0:
        count += 1
        num = num // 10
    return count

def insert_plus(num):
    str_num = str(num)
    middle = len(str_num) // 2
    new_str_num = str_num[:middle] + '+' + str_num[middle:]
    return int(new_str_num)

T = int(input())

for _ in range(T):
    num = int(input())
    new_num = insert_plus(num)
    zeros = count_zeros(new_num)
    print(zeros)

请注意,由于输入的数字可能非常大,我们将整数转换为字符串处理,以避免溢出问题。



【相关推荐】



如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^