http://codeforces.com/contest/490/problem/C
判断整除的问题
#include <iostream>
#include <string>
using namespace std;
bool flag[100000001];
int main()
{
int a, b ,d,e;
string c;
cin>>c;
cin>>a>>b;
e=0;
int temp=0;
temp=c[0]-'0';
int l=0;
while(l<c.length()-1)
{
temp=temp%a;
if (temp==0&&c[l+1]!='0') flag[l]=true;
temp=temp*10+c[++l]-'0';
}
l=c.length()-1;temp=c[l]-'0';
int tt=1;
while(l)
{
//cout<<temp<<endl;
temp=temp%b;
if (temp==0&&flag[l-1])
{
if (c[l]=='0')continue;
cout<<"YES"<<endl<<c.substr(0,l)<<endl<<c.substr(l)<<endl;
return 0;
}
tt*=10;
tt%=b;
temp=temp+(c[--l]-'0')*tt;
}
cout<<"NO"<<endl;
return 0;
}