A simple Blog for wyx I've been down the bottle hoping.
4292: [PA2015]Równanie 数学 水题
发表于: | 分类: Oi | 评论:0 | 阅读:123

对于一个正整数$n$,定义$f(n)$为它十进制下每一位数字的平方的和。现在给定三个正整数$k,a,b$,请求出满足$a\leq n\leq b$且$k*f(n)=n$的$n$的个数。

$k*f(n)=n,f(n)=n/k$

你会发现$f(n)$最大等于$9^2*18$,然后233333333333

[我开始想了半个小时怎么解方程,干

#include <stdio.h>
#include <string.h>
#include <iostream>
#include <algorithm>
using namespace std;
typedef long long LL;
LL k,a,b;

inline int calc(LL x){
    int ans = 0;
    while(x) ans += (x%10)*(x%10), x /= 10;
    return ans;
}

int main() {
    register int i, ans = 0;
    cin >> k >> a >> b;
    for(i = min(b/k,1458ll);i;--i) {
        LL n = i*k;
        if(n >= a && i == calc(n)) ++ans;
    }
    cout << ans << endl;
}

Title - Artist
0:00

站点地图 网站地图
Copyright © 2015-2017 A simple Blog for wyx
Powered by Typecho自豪的采用Sgreen主题

TOP