题解 AT1194 【方程式】

这道题目n的范围其实是 1018\large 10^{18}

所以暴力肯定是会 T 飞的。

那我们来想一下:

这里数字和最大是不是18个9是不是162?

那我们直接从 n162\large n - 162 枚举不就完了?

代码:

#include <iostream>
using namespace std;

#define int long long

inline int Digit_sum(const int& x)
{
    int tmp = x, sum = 0;
    while(tmp) {sum += tmp % 10; tmp /= 10;}
    return sum;
}

int ans[1020];

signed main()
{
    int n;
    int cur = 0;
    cin >> n;
    for(register int i = n - 162; i <= n; i++)
    {
        if(i + Digit_sum(i) == n) ans[++cur] = i;
    }
    cout << cur << endl;
    for(register int i = 1; i <= cur; i++) cout << ans[i] << endl;
    return 0;
}
posted @   HappyBobb  阅读(2)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示