zoukankan      html  css  js  c++  java
  • HUST

    input

    长度不大于3*10e5的数字串

    output

    不含前导0的能整除64的字串的个数(0算一个,064不算)

    一般数组中找能整除一个数的字串都是用取余来做的

    用一个a[64]来存下从1-i位累加到第i位的余数为0-63的个数,每次都加上余数为0的个数,第一位为0的只统计一次,不加入a数组中

     1 #include <iostream>
     2 #include <cstdio>
     3 #include <cstring>
     4 
     5 using namespace std;
     6 
     7 char s[300010];
     8 int a[2][64],b[64],sum,d;
     9 
    10 int main()
    11 {
    12     while(scanf("%s",s)==1)
    13     {
    14         memset(a,0,sizeof(a));
    15         sum=0;
    16         d=1;
    17         for(int i=0;s[i];i++)
    18         {
    19             memset(a[d^1],0,sizeof(a[0]));
    20             if(s[i]!='0') a[d][0]++;
    21             else sum++;
    22             for(int j=0;j<64;j++)
    23             {
    24                 int t=j*10+s[i]-'0';
    25                 a[d^1][t%64]+=a[d][j];
    26             }
    27             sum+=a[d^1][0];
    28             d^=1;
    29         }
    30         printf("%d
    ",sum);
    31     }
    32     return 0;
    33 }
    View Code
  • 相关阅读:
    大端小端
    浅谈协程
    boost总结之any
    boost总结之variant
    STL总结之functor
    zabbix设置多个收件人
    zabbix设置发送消息的时间
    zabbix利用微信报警
    Windos无法验证文件数组签名
    zabbix基础安装
  • 原文地址:https://www.cnblogs.com/cdyboke/p/4930726.html
Copyright © 2011-2022 走看看