CF490C.Hacking Cypher
普及+/提高
通过率:0%
时间限制:1.00s
内存限制:256MB
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
Polycarpus participates in a competition for hacking into a new secure messenger. He's almost won.
Having carefully studied the interaction protocol, Polycarpus came to the conclusion that the secret key can be obtained if he properly cuts the public key of the application into two parts. The public key is a long integer which may consist of even a million digits!
Polycarpus needs to find such a way to cut the public key into two nonempty parts, that the first (left) part is divisible by a as a separate number, and the second (right) part is divisible by b as a separate number. Both parts should be positive integers that have no leading zeros. Polycarpus knows values a and b.
Help Polycarpus and find any suitable method to cut the public key.
Polycarpus 正在参加一场破解新型安全即时通讯工具的比赛,他已接近获胜。
经过对交互协议的仔细研究,Polycarpus 得出结论:若能将应用程序的公钥恰当地分割为两部分,则可获取密钥。该公钥是一个很长的整数,其位数甚至可能高达一百万位!
Polycarpus 需要找到一种方式,将公钥切割为两个非空部分,使得第一部分(左侧部分)作为独立的数能被 a 整除,第二部分(右侧部分)作为独立的数能被 b 整除。这两部分均须为正整数,且不能含有前导零。Polycarpus 已知 a 和 b 的值。
请帮助 Polycarpus 找到任意一种满足条件的公钥切割方法。
输入格式
The first line of the input contains the public key of the messenger — an integer without leading zeroes, its length is in range from 1 to 106 digits. The second line contains a pair of space-separated positive integers a, b (1 ≤ a, b ≤ 108).
输入的第一行包含信使的公钥——一个不含前导零的整数,其位数在 1 到 106 之间。
第二行包含一对用空格分隔的正整数 a、b(1 ≤ a, b ≤ 108)。
输出格式
In the first line print "YES" (without the quotes), if the method satisfying conditions above exists. In this case, next print two lines — the left and right parts after the cut. These two parts, being concatenated, must be exactly identical to the public key. The left part must be divisible by a, and the right part must be divisible by b. The two parts must be positive integers having no leading zeros. If there are several answers, print any of them.
If there is no answer, print in a single line "NO" (without the quotes).
第一行输出 "YES"(不带引号),表示存在满足上述条件的方法。此时,接下来输出两行——切割后的左半部分和右半部分。这两部分连接后必须恰好等于公钥。左半部分必须能被 a 整除,右半部分必须能被 b 整除。这两个部分必须是正整数,且不能有前导零。若存在多个答案,输出任意一个即可。
若不存在满足条件的答案,则在单独一行中输出 "NO"(不带引号)。
输入输出样例
输入#1
116401024 97 1024
输出#1
YES 11640 1024
输入#2
284254589153928171911281811000 1009 1000
输出#2
YES 2842545891539 28171911281811000
输入#3
120 12 1
输出#3
NO
输入解题思路,AI测评打分。不知道怎么写?