星际探索:寻找虫洞的坐标
星际探索:寻找虫洞的坐标
阿金博士在星际探索中发明出了一种特殊的方程来计算虫洞的坐标。
对于一个正整数 '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 著作权归作者所有。请勿转载和采集!