2014/11/24
没想到,整除还能这么玩,昨天写的是n^2的..T的毫无脾气。
数整除的前继和后继两种做法(模拟)...
#include<stdio.h>
#include<string.h>
char s[1000005];
int s2[1000005];
int main()
{
int a, b;
while(~scanf("%s%d%d",s,&a,&b))
{
int c = 1;
int k = 0;
int temp = 1;
int len = strlen(s);
s2[len] = 0;
for(int i = len - 1;i > 0; i--)
{
s2[i] = (s2[i+1]+((s[i]-'0')*c)%b)%b;
c=(c*10)%b;
}
c = 1;
for(int i = 0;i < len-1; i++)
{
k*=10;
k+=s[i]-'0';
k%=a;
if(k==0&&s[i+1]!='0'&&s2[i+1]==0)
{
printf("YES\n");
for(int j = 0;j < len; j++)
{
printf("%c",s[j]);
if(j==i)printf("\n");
}
printf("\n");
temp = 0;
break;
}
}
if(temp)
{
printf("NO\n");
}
}
return 0;
}