single dog

假如没有情侣存在,那么单身狗一定是一个非常恐怖的生物。他们可以去电影院最多一人占据3个座位(大概是因为他们不愿意和别人坐在相邻的位置)难以想象他们为什么会有这么强大的战斗力。

那么问题来了。

假如一只单身狗的ID十进制下表示为N,在D进制下,他的战斗力为数字x出现的次数,而他的最大战斗力,则是所有进制下的战斗力中最大的那个。

n不大于10000, x为0到9中的一个数。D大于等于2.

给出n和x,问这只单身狗的战斗力。

样例输入:

3 1

样例输出:

2

这是一道好题:)

#include<stdio.h>
int singledog(int n, int x) {
    int d, i = 0, a[10000] = {0}, maxfight = 0;
    for (d = x+1; d <= n; d++) {
        int temp, m = n;
        while (m != 0) {
            temp = m % d;
            if (temp == x) a[i] = a[i] + 1;
            m = m / d;
        }
        if (a[i] > maxfight) maxfight = a[i];
        i++;
    }
    printf("%d\n", maxfight);
}
int main() {
    int n, x;
    scanf("%d%d", &n, &x);
    singledog(n, x);
    return 0;
}

然而上面这段代码在数据大的时候会超时、、、╥﹏╥…

#include<stdio.h>
int MAX(int a, int b) {
    return a > b ? a : b;
}
int sol(int n, int d, int x) {
    int tmp, sum = 0;
    while (n > 0) {
        tmp = n % d;
        if (tmp == x) sum++;
        n /= d;
    }
    return sum;
}
int main() {
    int n, x, i;
    scanf("%d%d", &n, &x);
    int ans = 0;
    for (i = 2; i <= n+1; i++) {
        ans = MAX(sol(n, i, x), ans);
    }
    printf("%d\n", ans);
    return 0;
}

(๑•̀ㅂ•́)و✧

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值