#29. 25年6月-华为实习(留学生)-1.数组切割
题目描述
题解
题库
25年6月-华为实习(留学生)-1.数组切割
题目内容
请将一个长整数切割成两部分,并使得这两部分分别满足以下条件:
第一部分能够被整数 a整除。
第二部分能够被整数b 整除。
切割后得到的两部分分别为正整数,并且不能有前导零。
给定一个长整数字符串和两个整数 a和 b,你需要判断是否能够找到一种切割方式,使得满足上述条件。
如果可以切割,输出切割后的两部分。如果不可以切割,则输出 NO
。
备注:
- 如果存在多种切割方式,请返回使第一部分的数值最大的切割方式。
- 切割出的正整数不能包含前导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。