星际探索:寻找虫洞的坐标

阿金博士在星际探索中发明出了一种特殊的方程来计算虫洞的坐标。

对于一个正整数 'n',定义 'n' 的空间函数 'f(n)' 为它十进制下每一位数字的平方和。给定特征值 'k' 和区间 '[a, b]',如果区间内的坐标 'n' 使得方程 'k × f(n) = n' 成立,则该处必有一个虫洞,区间中的虫洞个数可能有多个。

为了帮助阿金博士,你需要求出相应的虫洞数量。

输入格式

第 1 行共 3 个数值: 'k, a, b'。

输出格式

单独的一行包含一个整数,表示区间内的虫洞个数。

输入样例#1

51 5000 100000

输出样例#1

3

说明/提示

区间内的虫洞总共有3个,坐标分别7293,7854,7905。

对于 50% 的数据, 1 ≤ k, a, b ≤ 1000000

对于 100% 的数据, 1 ≤ k, a, b ≤ 10^18 , a ≤ b

C++ 代码

#include <iostream>
#include <cmath>
using namespace std;

int getDigitSquareSum(int n) {
    int sum = 0;
    while (n > 0) {
        int digit = n % 10;
        sum += digit * digit;
        n /= 10;
    }
    return sum;
}

int countWormholes(int k, int a, int b) {
    int count = 0;
    for (int n = a; n <= b; n++) {
        if (n * getDigitSquareSum(n) == k * n) {
            count++;
        }
    }
    return count;
}

int main() {
    int k, a, b;
    cin >> k >> a >> b;
    int result = countWormholes(k, a, b);
    cout << result << endl;
    return 0;
}
星际探索:寻找虫洞的坐标

原文地址: https://www.cveoy.top/t/topic/qtN 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录