博客
关于我
PAT乙级真题 1091 N-自守数 C++实现
阅读量:615 次
发布时间:2019-03-13

本文共 1685 字,大约阅读时间需要 5 分钟。

为了解决这个问题,我们需要判断给定的数字是否是某个 N 的 N-自守数。N-自守数的定义是:某个数 K 满足 N × K² 的结果的末尾几位数等于 K。

方法思路

  • 输入处理:读取输入的正整数 M 和接下来的 M 个待检测的数字。
  • 遍历 N 的值:对于每个待检测的数字 K,遍历 N 的值从 1 到 9。
  • 计算末尾几位数:对于每个 N,计算 N × K² 的结果,并提取其末尾几位数。末尾几位数的位数等于 K 的位数。
  • 比较末尾几位数:将计算得到的末尾几位数转换为字符串,补零到与 K 相同的位数,比较是否与 K 的字符串形式相同。
  • 输出结果:如果找到满足条件的 N,输出 N 和对应的 N × K² 的结果;否则输出 "No"。
  • 解决代码

    #include 
    #include
    using namespace std;int main() { int m; cin >> m; for (int k = 0; k < m; ++k) { int K; cin >> K; int d = 0; int temp = K; while (temp > 0) { d++; temp /= 10; } string K_str = to_string(K); bool found = false; int min_N = -1; long long min_product = -1; for (int N = 1; N <= 9; ++N) { long long product = (long long)N * K * K; int mod = 1; for (int i = 0; i < d; ++i) { mod *= 10; } int last_part = product % mod; char buffer[d + 1]; snprintf(buffer, d + 1, "%0" + string(d, '0') + "%d", last_part); string last_str(buffer); if (last_str == K_str) { found = true; min_N = N; min_product = product; break; } } if (found) { cout << min_N << " " << min_product << endl; } else { cout << "No" << endl; } } return 0;}

    代码解释

  • 读取输入:首先读取输入的 M 值,然后读取 M 个待检测的数字。
  • 计算位数:对于每个待检测的数字 K,计算其位数 d。
  • 遍历 N 的值:从 1 到 9 遍历每个 N,计算 N × K² 的结果。
  • 计算末尾几位数:使用模运算提取 N × K² 的末尾 d 位,并将其转换为字符串。
  • 比较末尾几位数:将末尾几位数补零到 d 位,比较是否与 K 的字符串形式相同。
  • 输出结果:如果找到满足条件的 N,输出结果;否则输出 "No"。
  • 这种方法确保了我们能够高效地判断每个数字是否是某个 N 的 N-自守数,满足了题目的要求。

    转载地址:http://lymaz.baihongyu.com/

    你可能感兴趣的文章
    我用wxPython搭建GUI量化系统之最小架构的运行
    查看>>
    selenium+python之切换窗口
    查看>>
    重载和重写的区别:
    查看>>
    搭建Vue项目步骤
    查看>>
    账号转账演示事务
    查看>>
    SpringBoot找不到@EnableRety注解
    查看>>
    在Vue中使用样式——使用内联样式
    查看>>
    Find Familiar Service Features in Lightning Experience
    查看>>
    Explore Optimization
    查看>>
    map[]和map.at()取值之间的区别
    查看>>
    【SQLI-Lab】靶场搭建
    查看>>
    【Bootstrap5】精细学习记录
    查看>>
    Struts2-从值栈获取list集合数据(三种方式)
    查看>>
    设计模式(18)——中介者模式
    查看>>
    推荐几篇近期必看的视觉综述,含GAN、Transformer、人脸超分辨、遥感等
    查看>>
    VTK:可视化之RandomProbe
    查看>>
    block多队列分析 - 2. block多队列的初始化
    查看>>
    Java时间
    查看>>
    不编译只打包system或者vendor image命令
    查看>>
    【编程】C语言入门:1到 100 的所有整数中出现多少个数字9
    查看>>