zoukankan      html  css  js  c++  java
  • 校赛1007题的经典解法

    Problem Description
    Payne和Quincy是一对好Basefriend,即使在“六一光棍节”这天,寂寞无聊的Payne决定调戏一下Quincy。
    他在一张纸上写下了一串数字,然后来到Quincy面前。
    “嗨,Quincy,我看你也挺无聊的,来验证一下你的智商吧。”
    “噢,Payne,你又有什么鬼主意了?”
    “嘿,听一听吧,会很有趣的!”
    “嗯,那你说吧。”
    “哈,听着,你看这里有一串数。我们从中取一段连续的数字,比如你看这的1357902468147258369,我们从中取出一段长度为7的子串,可以是5790246,或者是0246814。这样我们就得到了一些新的数。然后,让我们看看长度为7的所有子串所表示的数里面,共有多少个数是9的倍数。”
    “哼,多简单的游戏啊。小孩都会算。”
    “呵,那咱俩来试试?我写一个数,你来告诉我答案?”

    Input
    一个正整数T(1 ≤ T ≤ 100),表示有T组数据。
    以下每组数据各有两行输入
    第一行包含两个正整数N,M(1 ≤ N ≤ 10^6,1 ≤ M ≤ 10^3),表示母串长度为N,子串长度为M。
    第二行包含一个大数,大数按十进制表示,共有N位。

    Output
    每组数据输出一行,包含一个数,表示母串中所有长度为M的子串中,为9的倍数的个数
    Sample Input
    2 3 2 181 5 3 18171
    Sample Output
    2 1 #include<stdio.h>#define MAXN 1000000
    int t;
    main()
    { int i,j,k,count; long n,m,aa; char a[MAXN]; scanf("%d",&t); for(i=0;i<t;i++) {  scanf("%d%d",&n,&m);  scanf("%s",a);  count=0;  for(j=0;j+m<=n;j++)         {                 if(j==0)                 {                  aa=0;                      for(k=0;k<m;k++)                            aa+=a[k]-'0';                 }else                    {                                aa-=a[j-1]-'0';                                aa+=a[j+m-1]-'0';                 }                        if(!(aa%9))                         count++;         }        printf("%d\n",count); } system("pause"); return 0;}
  • 相关阅读:
    git本地分支管理
    SpringMVC的第一个入门案例
    原来热加载如此简单,手动写一个 Java 热加载吧
    Spring Boot2 系列教程(十七)SpringBoot 整合 Swagger2
    SpringBoot 开发案例之参数传递的正确姿势
    MENU Java 中的 final、finally、finalize 有什么不同?
    Java Web 学习(1) —— Servlet
    Spring 基础知识学习
    SpringBoot中如何灵活的实现接口数据的加解密功能?
    Java中常用的四种线程池
  • 原文地址:https://www.cnblogs.com/chaosheng/p/2329587.html
Copyright © 2011-2022 走看看