zoukankan      html  css  js  c++  java
  • cf C. Hacking Cypher

    http://codeforces.com/contest/490/problem/C

    题意:把一个很大的数分成两部分,前一部分可以被a整除,后一部分可以被b整除,如果存在输出这两部分,两部分都不能含有前导0;

    思路:从左到右求出在每一位对a的余数记录在aa数组里面,再从右向左在每一位对b的余数记录在bb数组里面。在aa[i]==0&&bb[i+1]==0&&bb[i+1]!='0'的情况下,就存在答案。

     1 #include <cstdio>
     2 #include <cstring>
     3 #include <algorithm>
     4 #define LL __int64
     5 using namespace std;
     6 
     7 char str[2000000];
     8 int a,b;
     9 int aa[2000000],bb[2000000];
    10 
    11 int main()
    12 {
    13     while(scanf("%s",str)!=EOF)
    14     {
    15         scanf("%d%d",&a,&b);
    16         int k=strlen(str);
    17         int t=0;
    18         for(int i=0; i<k; i++)
    19         {
    20             t+=(str[i]-'0');
    21             aa[i]=t%a;
    22             t%=a;
    23             t*=10;
    24         }
    25         int s=1,t1=0;
    26         for(int i=k-1; i>=0; i--)
    27         {
    28             bb[i]=((str[i]-'0')*s+t1)%b;
    29             t1=((str[i]-'0')*s+t1)%b;
    30             s=(s*10)%b;
    31         }
    32         bool flag=false;
    33         int pos=-1;
    34         for(int i=0; i<k-1; i++)
    35         {
    36             if(aa[i]==0&&bb[i+1]==0&&str[i+1]!='0')
    37             {
    38                 pos=i;
    39                 flag=true;
    40                 break;
    41             }
    42         }
    43         if(flag)
    44         {
    45             printf("YES
    ");
    46             for(int i=0; i<=pos; i++)
    47             {
    48                 printf("%c",str[i]);
    49             }
    50             printf("
    ");
    51             for(int i=pos+1; i<k; i++)
    52             {
    53                 printf("%c",str[i]);
    54             }
    55             printf("
    ");
    56         }
    57         else
    58         {
    59             printf("NO
    ");
    60         }
    61     }
    62     return 0;
    63 }
    View Code
  • 相关阅读:
    线程池和进程池
    初识数据库
    线程q
    event事件
    死锁和递归锁
    信号量
    PythonStudy——线程中的几种消息队列
    PythonStudy——GIL Global Interpreter Lock 全局解释器锁
    PythonStudy——异步回调
    PythonStudy——日志模块 logging
  • 原文地址:https://www.cnblogs.com/fanminghui/p/4118174.html
Copyright © 2011-2022 走看看