#29. 25年6月-华为实习(留学生)-1.数组切割

题目描述
题解
题库

25年6月-华为实习(留学生)-1.数组切割

题目内容

请将一个长整数切割成两部分,并使得这两部分分别满足以下条件:

第一部分能够被整数 a整除。

第二部分能够被整数b 整除。

切割后得到的两部分分别为正整数,并且不能有前导零。

给定一个长整数字符串和两个整数 a和 b,你需要判断是否能够找到一种切割方式,使得满足上述条件。

如果可以切割,输出切割后的两部分。如果不可以切割,则输出 NO

备注:

  1. 如果存在多种切割方式,请返回使第一部分的数值最大的切割方式。
  2. 切割出的正整数不能包含前导0,如0,01,0012都是不允许的。

输入描述

第一行是一个大整数,这个整数的长度最大可达1000位。

第二行包含两个整数 a 和 b,其中 1 <=a, b <= 10^6。

输出描述

如果存在合适的切割方式,输出 YES,然后输出两行分别为切割后的左部分和右部分。

如果不存在合适的切割方式,输出 NO

样例1

输入

3120000324
97 1024

输出

YES
11640
1024

说明

1164能被97整除,1024能被1024整除。

样例2

输入

284254589153928171911281811000
1009 1000

输出

YES
2842545891539
28171911281811000

说明

2842545891539能被1009整除,28171911281811000能被1000整除。

样例3

输入

120
12 1

输出

NO

说明

要求切割为两个正整数,120切割成12和0,第二部分0不是正整数,所以返回NO。