1136 A Delayed Palindrome (20point(s)) - C语言 PAT 甲级

1136 A Delayed Palindrome (20point(s))

Consider a positive integer N written in standard notation with k+1 digits a​i​​ as a​k​​⋯a​1​​a​0​​ with 0≤a​i​​<10 for all i and a​k​​>0. Then N is palindromic if and only if a​i​​=a​k−i​​ for all i. Zero is written 0 and is also palindromic by definition.

Non-palindromic numbers can be paired with palindromic ones via a series of operations. First, the non-palindromic number is reversed and the result is added to the original number. If the result is not a palindromic number, this is repeated until it gives a palindromic number. Such number is called a delayed palindrome. (Quoted from https://en.wikipedia.org/wiki/Palindromic_number )

Given any positive integer, you are supposed to find its paired palindromic number.

Input Specification:

Each input file contains one test case which gives a positive integer no more than 1000 digits.

Output Specification:

For each test case, print line by line the process of finding the palindromic number. The format of each line is the following:

A + B = C

where A is the original number, B is the reversed A, and C is their sum. A starts being the input number, and this process ends until C becomes a palindromic number – in this case we print in the last line C is a palindromic number.; or if a palindromic number cannot be found in 10 iterations, print Not found in 10 iterations. instead.

Sample Input:

97152

Sample Output:

97152 + 25179 = 122331
122331 + 133221 = 255552
255552 is a palindromic number.

Sample Input:

196

Sample Output:

196 + 691 = 887
887 + 788 = 1675
1675 + 5761 = 7436
7436 + 6347 = 13783
13783 + 38731 = 52514
52514 + 41525 = 94039
94039 + 93049 = 187088
187088 + 880781 = 1067869
1067869 + 9687601 = 10755470
10755470 + 07455701 = 18211171
Not found in 10 iterations.

题目大意:

1079 延迟的回文数 (20point(s))

设计思路:

1079 延迟的回文数(C语言)

  • 此题难点在于大数的相加。思路是让数组存数字时,个位数在数组低位 a[0] 上,此时两数相加可直接进位,省去进位移动数组的麻烦
  1. 读取初始值时特殊处理一次即可
  2. 利用自定义函数逆转数组,输出数组即可
编译器:C (gcc)
#include <stdio.h>
#include <string.h>

int reverse_ab(char a[], char b[]);
int add_ab(char a[], char b[]);
int is_palindrome(char a[]);
int print_ab(char a[], char b[]);
int print_str(char a[]);

int main()
{
        char a[1011] = {0}, b[1011] = {0};
        int i = 0;

        scanf("%s", b);
        if (!is_palindrome(b)) {
                reverse_ab(b, a);
                print_ab(a, b);
                for (i = 1; i < 10 && !is_palindrome(a); i++) {
                        reverse_ab(a, b);
                        print_ab(a, b);
                }
        }

        if (i == 10) {
                printf("Not found in 10 iterations.");
        } else {
                i > 0 ? print_str(a) : print_str(b);
                printf(" is a palindromic number.");
        }

        return 0;
}

int reverse_ab(char a[], char b[])
{
        int len = strlen(a);
        int i;
        for (i = 0; i < len; i++)
                b[len - i - 1] = a[i];
        return 0;
}

int add_ab(char a[], char b[])
{
        int len = strlen(a);
        int i, sum, carry = 0;
        for (i = 0; i < len; i++) {
                sum = a[i] - '0' + b[i] - '0' + carry;
                a[i] = sum % 10 + '0';
                carry = sum / 10;
        }
        if (carry)
                a[i] = carry + '0';
        return 0;
}

int is_palindrome(char a[])
{
        int len = strlen(a);
        int i;
        for (i = 0; i < len / 2; i++)
                if (a[i] != a[len - i - 1])
                        return 0;
        return 1;
}

int print_ab(char a[], char b[])
{
        print_str(a);
        printf(" + ");
        print_str(b);
        printf(" = ");

        add_ab(a, b);

        print_str(a);
        printf("\n");
        return 0;
}

int print_str(char a[])
{
        int i = strlen(a) - 1;
        for (; i >= 0; i--)
                printf("%c", a[i]);
        return 0;
}
### 回答1: rabbitmq_delayed_message_exchange-20171201-3.7.x.zip是RabbitMQ的一个插件包。RabbitMQ是一个开源的消息队列中间件,用于实现异步通信和解耦应用程序之间的消息传递。 这个插件包是针对RabbitMQ版本3.7.x的,目的是提供延迟消息交换的功能。延迟消息交换是指消息可以在一定的时间延迟后再被投递到消费者,这对于某些需要延迟处理的业务场景非常有用。 使用这个插件包,可以通过声明一个类型为"x-delayed-message"的交换机,来实现延迟消息交换。在发送消息时,可以通过设置消息的headers来指定延迟的时间,RabbitMQ会根据这个时间将消息存储在内部的延迟队列中。一旦到达延迟时间,消息将从延迟队列中被取出并且发送到相应的消费者队列中。 这个插件包的安装和配置相对简单,只需要将插件包放置在RabbitMQ的插件目录中,并在RabbitMQ的配置文件中启用该插件即可。安装完毕后,就可以在RabbitMQ中使用延迟消息交换功能。 总之,rabbitmq_delayed_message_exchange-20171201-3.7.x.zip是RabbitMQ的一个插件包,用于实现延迟消息交换功能,非常适用于一些需要延迟处理的业务场景。使用这个插件包可以方便地在RabbitMQ中实现延迟消息交换。 ### 回答2: rabbitmq_delayed_message_exchange-20171201-3.7.x.zip 是RabbitMQ插件的一个压缩包。 RabbitMQ是一种开源的消息队列中间件,它实现了高度可靠的消息传递机制,用于在分布式系统中传递和处理消息。RabbitMQ提供了一种将应用程序的不同部分连接起来的方式,允许它们之间进行可靠的通信。 而rabbitmq_delayed_message_exchange插件是RabbitMQ的一个延迟消息交换机的插件。它允许开发人员在RabbitMQ中发送具有延迟的消息。延迟消息是指在指定的延迟时间后才能被消费者接收到的消息。通过延迟消息交换机,可以实现一些需要延迟处理的场景,如订单超时提醒、定时任务等。 这个压缩包的命名格式为rabbitmq_delayed_message_exchange-20171201-3.7.x.zip。其中,20171201表示该插件的发布日期为2017年12月01日,3.7.x代表该插件适用于RabbitMQ 3.7.x版本。 使用该插件,你需要下载这个压缩包,然后解压缩。解压后会得到一个插件文件,将该文件放置到RabbitMQ的插件目录中。之后,你需要启动或重启RabbitMQ服务,使插件生效。 通过安装rabbitmq_delayed_message_exchange插件,你可以在RabbitMQ中实现消息的延迟发送和处理。这对于需要进行一些延迟操作的应用场景非常有用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值