Codeforces Round #279 (Div. 2) C. Hacking Cypher 机智的前缀和处理

#include <cstdio>

#include <cmath>

#include <cstring>

#include <ctime>

#include <iostream>

#include <algorithm>

#include <set>

#include <vector>

#include <sstream>

#include <queue>

#include <typeinfo>

#include <fstream>

typedef long long ll;

using namespace std;

//freopen("D.in","r",stdin);

//freopen("D.out","w",stdout);

#define io_speed ios_base::sync_with_stdio(0);cin.tie(0)

string s;

int a,b,vis[1000005];

int main(){

    io_speed;

    cin>>s;

    cin>>a>>b;

    int base=1,ans=0,len = s.size();

    memset(vis,0,sizeof(vis));

    for(int i=len-1;i>0;i--){

        ans = ( ans + (s[i] - '0')*base ) % b;

        vis[i] = ans;

        base = base*10%b;

    }

    ans=0;

    for(int i=0;i<len-1;i++){

        ans = ( ans*10 + s[i]-'0' ) % a;

        if( ans==0 && vis[i+1]==0 && s[i+1]!='0' ){

            cout<<"YES\n";

            cout<<s.substr(0,i+1)<<endl;

            cout<<s.substr(i+1,len-i-1)<<endl;

            return 0;

        }

    }

    puts("NO");

    return 0;

}

 

你可能感兴趣的:(codeforces)