zoukankan      html  css  js  c++  java
  • HUST 1599 Multiple

      题目大意  是给你一个字符串,问其中有多少个字串代表的数字能被64整除(注意不能有前导0 且 单独的'0'也是可以的)。    这题里的64是有些特殊的,,,因为1000000刚好能够整除64,这里就是突破口。    先预处理出字符串中不为0的数字的前缀和,,然后嵌套两个循环,将下标i从0扫到n-6,每次再暴搜i至i+6内的能整除64的个数,   再加上i下标的前缀和的数值。   

      放代码吧。。。:

     1 #include <iostream>
     2 #include <cstdio>
     3 #include <algorithm>
     4 #include <cstring>
     5 #include <cmath>
     6 #include <cstdlib>
     7 #include <cctype>
     8 #include <queue>
     9 #include <stack>
    10 #include <map>
    11 #include <vector>
    12 #include <set>
    13 #include <utility>
    14 #define ll long long
    15 #define inf 0x3f3f3f3f
    16 using namespace std;
    17 
    18 char str[300005];
    19 int len;
    20 int front_sum[300005];
    21 void init()  //预处理前缀和
    22 {
    23     len=strlen(str);
    24     front_sum[0]=!!(str[0]-'0');
    25     for(int i=1;i<len-6;i++)
    26         if(str[i]-'0')
    27             front_sum[i]=front_sum[i-1]+1;
    28         else
    29             front_sum[i]=front_sum[i-1];
    30 }
    31 ll solve()
    32 {
    33     ll res=0;
    34     for(int i=0;i<len;i++)
    35     {
    36         int num=0;
    37         if(str[i]=='0') //如果为0则也是一种情况
    38             res++;
    39         for(int j=0;j<6&&i+j<len;j++) //暴搜6位以内的个数
    40         {
    41             num=num*10+str[i+j]-'0';
    42             if(num%64==0&&str[i]!='0') //不能有前导0存在
    43                 res++;
    44         }
    45         if(num%64==0&&i+5<len&&i>0) //num为64倍数 且 该i到j这段的长度>=6 且 i不为第一个
    46             res+=front_sum[i-1];
    47     }
    48     return res;
    49 }
    50 int main()
    51 {
    52     //freopen("input.txt","r",stdin);
    53     while(scanf("%s",str)!=EOF)
    54     {
    55         init();
    56         ll res=solve();
    57         printf("%lld
    ",res);
    58     }
    59     return 0;
    60 }
  • 相关阅读:
    ADO.NET基础学习 二(Command对象)
    如何使ElementUI中的el-dropdown传入多参数
    Vue router Element 重复点击导航路由报错解决方法
    vue-svgicon基本使用
    js 两个相等的数组,修改其中一个怎么做到不改变另外一个
    LocalStorage存储JSON对象
    js取整数、取余数的方法
    JS正则截取两个字符串之间及字符串前后内容的方法
    Vuetify 表单规则验证
    JS正则表达式
  • 原文地址:https://www.cnblogs.com/geek1116/p/5685108.html
Copyright © 2011-2022 走看看