Codeforces 490C Hacking Cypher【前缀模+后缀模+暴力】
来源:互联网 发布:js实现冒泡排序 编辑:程序博客网 时间:2024/04/30 06:58
C. Hacking Cypher
time limit per test
1 second
memory limit per test
256 megabytes
input
standard input
output
standard output
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 bya as a separate number, and the second (right) part is divisible byb as a separate number. Both parts should bepositive integers that have no leading zeros. Polycarpus knows valuesa andb.
Help Polycarpus and find any suitable method to cut the public key.
Input
The first line of the input contains the public key of the messenger — an integer without leading zeroes, its length is in range from1 to106 digits. The second line contains a pair of space-separated positive integersa,b (1 ≤ a, b ≤ 108).
Output
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 bya, and the right part must be divisible byb. 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).
Examples
Input
116401024
97 1024
Output
YES
11640
1024
Input
284254589153928171911281811000
1009 1000
Output
YES
2842545891539
28171911281811000
Input
120
12 1
Output
NO
题目大意:
#include<stdio.h>#include<string.h>using namespace std;char a[1000050];int bb[1000050];int cc[1000050];int main(){ while(~scanf("%s",a)) { int b,c; scanf("%d%d",&b,&c); int n=strlen(a); bb[0]=(a[0]-'0')%b; for(int i=1;i<n;i++) { bb[i]=(bb[i-1]*10+a[i]-'0')%b; } cc[n-1]=(a[n-1]-'0')%c; int tmp=1; for(int i=n-2;i>=0;i--) { tmp=tmp*10%c; cc[i]=(cc[i+1]+tmp*(a[i]-'0'))%c; } int flag=0; for(int i=0;i<n;i++) { if(bb[i]==0&&i+1<n&&a[i+1]!='0'&&cc[i+1]==0) { flag=1; printf("YES\n"); for(int j=0;j<=i;j++) { printf("%c",a[j]); } printf("\n"); for(int j=i+1;j<n;j++) { printf("%c",a[j]); } printf("\n"); break; } } if(flag==0)printf("NO\n"); }}
- Codeforces 490C Hacking Cypher【前缀模+后缀模+暴力】
- Codeforces 490C Hacking Cypher(暴力)
- Codeforces 490C Hacking Cypher 暴力
- codeforces 490-C. Hacking Cypher(暴力)
- codeforces 490C Hacking Cypher(大数逆向取模)
- CodeForces 490C Hacking Cypher
- CodeForces 490C - Hacking Cypher
- codeforces 490C Hacking Cypher
- CodeForces 490C Hacking Cypher
- 【CODEFORCES】 C. Hacking Cypher
- [CodeForces 490C]Hacking Cypher[math]
- Hacking Cypher(CF--490C
- 【Codefroces 490 C Hacking Cypher】+ dp
- C. Hacking Cypher
- Codeforces Round #279 (Div. 2)C. Hacking Cypher
- Codeforces Round #279 (Div. 2) C. Hacking Cypher
- Codeforces Round #279 (Div. 2) C. Hacking Cypher
- Codeforces Round #279 (Div. 2)C. Hacking Cypher
- AlertDialog弹窗引用自定义layout布局动态显示seekbar进度
- 国际化
- 干嘛?
- RTCP协议详解
- linux下文件的复制、移动与删除
- Codeforces 490C Hacking Cypher【前缀模+后缀模+暴力】
- 编译运行出现:__NSCFConstantString countByEate:objects:count: ?
- codeforces #373 div2题解
- VS2010 CString转字符数组时,数组中每个字符后面都会多出一个\0 解决办法
- C++之“友元类”学习笔记
- 《c和指针》(七)
- HTML特殊符号对照表
- Biorhythms问题
- Linux信号实践(1) --Linux信号编程概述