2018安徽省程序设计大赛回顾

题目-答案-题解

Posted by zhangzexin on May 26, 2018

A 数7

描述

求整数序列中位置L到位置R中一共有多少个7。对于每个数7的个数的定义为,十进制每个位置上一共有多少个7,以及能够被7整除的次数。

样例输入

  • 2
  • 1 10
  • 47 50

源码

#include <cstdio>
#include <iostream>
#include <cstring>
using namespace std;
int main()
{
    int ans, l, r, t, ii;
    freopen("input.txt","r",stdin);
    scanf("%d", &t);
    char a[100];
    while (t--){
        ans = 0;
        scanf("%d%d", &l, &r);
        for (int i = l; i <= r; i++){
            memset(a, '\0', sizeof(a));
            sprintf(a, "%d", i);
            int len = strlen(a);
            for (int j = 0; l <= len; j++){
                if (a[j] == '7')
                    ans++;
            }
            ii=i;
            while (ii >= 7){
                if (i % 7 == 0)
                    ans++;
                ii=i/7;
            }
        }
        printf("%d\n", ans);
    }
}