博客
关于我
《算法笔记》学习日记——5.1 简单数学
阅读量:211 次
发布时间:2019-02-28

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

为了解决这个问题,我们需要编写一个程序来判断一个整数是否为守形数。守形数的定义是它的平方的低位部分等于它本身。例如,25的平方是625,低位部分是25,因此25是一个守形数。

方法思路

  • 读取输入:我们需要读取多个整数,每个整数在2到100之间。
  • 计算平方:对于每个输入的整数,计算它的平方。
  • 获取平方后的末尾位数:找出输入整数的位数,然后从平方结果中截取相同位数的末尾部分。
  • 比较:将截取后的末尾部分与原数进行比较。如果相等,则输出"Yes!",否则输出"No!"。
  • 解决代码

    #include 
    #include
    #include
    #include
    #include
    using namespace std;int main() { int n; while (scanf("%d", &n) != EOF) { int d = 0; int temp = n; while (temp != 0) { d++; temp /= 10; } long long square = pow(n, 2); int mod = 1; for (int i = 0; i < d; i++) { mod *= 10; } long long last_part = square % mod; if (last_part == n) { printf("Yes!\n"); } else { printf("No!\n"); } memset(&n, 0, sizeof(int)); memset(&square, 0, sizeof(long long)); memset(&last_part, 0, sizeof(long long)); memset(&mod, 0, sizeof(int)); } return 0;}

    代码解释

  • 读取输入:使用scanf函数读取输入,直到EOF为止。
  • 计算位数:通过循环计算输入整数的位数。
  • 计算平方:使用pow函数计算输入整数的平方,并将结果存储在long long类型中以避免精度问题。
  • 截取末尾部分:计算一个模数mod,这个模数等于10的d次方。然后使用模运算截取平方结果的末尾d位。
  • 比较并输出结果:将截取后的末尾部分与原数比较,如果相等则输出"Yes!",否则输出"No!"。
  • 这个方法通过数学运算高效地解决了问题,确保了代码的正确性和效率。

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

    你可能感兴趣的文章
    NASA网站曝严重漏洞,或将沦为黑客钓鱼网站?
    查看>>
    Nash:轻量级、安全且可靠的脚本语言
    查看>>
    NAS、SAN和DAS的区别
    查看>>
    NAS个人云存储服务器搭建
    查看>>
    nat 网卡间数据包转发_你是不是从来没有了解过光纤网卡,它跟普通网卡有什么区别?...
    查看>>
    NAT-DDNS内网穿透技术,快解析DDNS的优势
    查看>>
    NAT-DDNS内网穿透技术,解决动态域名解析难题
    查看>>
    NativePHP:使用PHP构建跨平台桌面应用的新框架
    查看>>
    Nat、端口映射、内网穿透有什么区别?
    查看>>
    Nat、端口映射、内网穿透有什么区别?
    查看>>
    nat打洞原理和实现
    查看>>
    NAT技术
    查看>>
    NAT模式/路由模式/全路由模式 (转)
    查看>>
    NAT模式下虚拟机centOs和主机ping不通解决方法
    查看>>
    NAT的两种模式SNAT和DNAT,到底有啥区别?
    查看>>
    NAT网络地址转换配置实战
    查看>>
    NAT网络地址转换配置详解
    查看>>
    Navicat for MySQL 命令列 执行SQL语句 历史日志
    查看>>
    Navicat for MySQL 查看BLOB字段内容
    查看>>
    Navicat for MySQL(Ubuntu)过期解决方法
    查看>>