1091 N-自守数 (15分)
 

如果某个数 K 的平方乘以 N 以后,结果的末尾几位数等于 K,那么就称这个数为“N-自守数”。例如 3,而 2 的末尾两位正好是 9,所以 9 是一个 3-自守数。

本题就请你编写程序判断一个给定的数字是否关于某个 N 是 N-自守数。

输入格式:

输入在第一行中给出正整数 M(≤),随后一行给出 M 个待检测的、不超过 1000 的正整数。

输出格式:

对每个需要检测的数字,如果它是 N-自守数就在一行中输出最小的 N 和 NK​2​​ 的值,以一个空格隔开;否则输出 No。注意题目保证 0。

输入样例:

3
92 5 233
 

输出样例:

3 25392
1 25
No

这道题我偷了一下懒,直接使用sprintf将K, K*K*i写入两个字符数组buf1, buf2,然后用strcmp检测 buf1 与 buf2 + strlen(buf2)- strlen(buf1)是不是相等,相等就返回i,全程没动脑子,暴力解决,我的自守数判断函数,题目说K 不大于 1000 ,那,K的数组只需要 4+1,即可, K2 * n 最大也只能是 1000 * 1000 * 10 = 10000000 ,所以数组长度只需要8+1

int isSDnumber(int K)
{
char buf1[5] = {0}, buf2[9] = {0};
int square = K * K; sprintf(buf1, "%d", K); for (int i = 0; i <= 10; i++)
{
sprintf(buf2, "%d", square * i);
int len = strlen(buf2) - strlen(buf1);
if (0 == strcmp(buf1, buf2 + len))
{
return i;
}
}
return -1;
}

完整代码:

更新 2020-02-14:好吧,小姐姐有投诉我懒了,所以我写了非字符数组的版本的检测

在PAT上提交总体时间耗时比用字符长……

int compare(int x, int k)
{
while (k != 0)
{
int t1 = x % 10;
int t2 = k % 10;
if (t1 != t2)
{
return 0;
}
x /= 10;
k /= 10;
}
return 1;
}

2020-02-1411:58:45 更新:完整的判断函数:

我测试过了,clock出来,这个方法跑完样例1,会比字符数组的块一些,我也不知道为什么,PAT里提交平均水平下字符数组会比较快

好吧,现在我知道了,这个方法对于不是自守数的数会快很多,

对于整个数组测试组数为5 且全为非自守数且全为999,这种极端情况下,大概快9倍,

对于整个数组测试组数为5 且全为自守数并且为1000,这种极端情况下,字符数组方法比非字符快10倍左右

对于整个数组测试组数为5 且全为自守数并且为1000,这种极端情况下,差不多持平

int isSDnumber(int k)
{
for (int i = 0; i <= 10; i++)
{
int temp = k;
int square = (i * k * k);
while (temp != 0)
{
int t1 = square % 10;
int t2 = temp % 10;
if (t1 != t2)
{
break;
}
square /= 10;
temp /= 10;
}
if (i > 0 && 0 == temp)
{
return i;
}
}
return -1;
}

完整代码:

PAT不易,诸君共勉!

P1091 N-自守数的更多相关文章

  1. HW--自守数

    package testcase; import huawei.Demo; import junit.framework.TestCase;//加入测试框架,不需要写Main函数 public cla ...

  2. C语言之自守数

    自守数 自守数是指一个数的平方的尾数等于该数自身的自然数,如25*25=625,76*76=5776.要求求出一定范围内的所有自守数. 题目分析: 刚拿到这个题目的时候认为解题关键在于,测试该数平方数 ...

  3. 自守数算法----C语言实现

    #include <stdio.h> //自守数算法 //ep : 25 ^ 2 = 625 76 ^ 2 = 5776 9376 ^ 2 = 87909376 /*ep : * 376 ...

  4. 1091 N-自守数

    如果某个数 K 的平方乘以 N 以后,结果的末尾几位数等于 K,那么就称这个数为“N-自守数”.例如 3×92​2​​=25392,而 25392 的末尾两位正好是 92,所以 92 是一个 3-自守 ...

  5. PAT 乙级 1091 N-自守数 (15 分)

    1091 N-自守数 (15 分) 如果某个数 K 的平方乘以 N 以后,结果的末尾几位数等于 K,那么就称这个数为“N-自守数”.例如 3×92​2​​=25392,而 25392 的末尾两位正好是 ...

  6. pat乙级 1091 N-自守数 (15 分)

    如果某个数 K 的平方乘以 N 以后,结果的末尾几位数等于 K,那么就称这个数为“N-自守数”.例如 3×92​2​​=25392,而 25392 的末尾两位正好是 92,所以 92 是一个 3-自守 ...

  7. 1091 N-自守数 (15 分)

    如果某个数 K 的平方乘以 N 以后,结果的末尾几位数等于 K,那么就称这个数为“N-自守数”.例如 3×92​2​​=25392,而 25392 的末尾两位正好是 92,所以 92 是一个 3-自守 ...

  8. B1091 N-自守数 (15分)

    B1091 N-自守数 (15分) 如果某个数 \(K\)的平方乘以\(N\) 以后,结果的末尾几位数等于 \(K\),那么就称这个数为"\(N\)-自守数".例如 \(3×92 ...

  9. PAT 乙级 1091.N-自守数 C++/Java

    题目来源 如果某个数 K 的平方乘以 N 以后,结果的末尾几位数等于 K,那么就称这个数为“N-自守数”.例如 3,而 2 的末尾两位正好是 9,所以 9 是一个 3-自守数. 本题就请你编写程序判断 ...

随机推荐

  1. 高级T-SQL进阶系列 (一)【中篇】:使用 CROSS JOIN 介绍高级T-SQL

    [译注:此文为翻译,由于本人水平所限,疏漏在所难免,欢迎探讨指正] 原文连接:传送门. 当一个CROSS JOIN 表现得如同一个INNER JOIN 在上一章节我提到当你使用一个CROSS JOIN ...

  2. php海量架构

    架构 Varnish+nginx+php(FastCGI)+MYSQL5+MenCache+MenCachedb 说明:我在设计系统架构时,进行了大胆的尝试,只用6台Web服务器,达到了可承受4000 ...

  3. HD Tune检查硬盘各参数的含义

    01 =Read Error Rate / (底层)数据读取错误率指从磁盘表面读取数据时发生的硬件读取错误的比率,Raw值对于不同的厂商有着不同的体系,单纯看做1个十进制数字是没有任何意义的.以上为W ...

  4. sshpass安装以及使用

    centos7如何安装sshpass 先安装epel yum install -y epel-release yum repolist 安装完成epel之后,就可以按照sshpass了 yum ins ...

  5. PHP的自定义模板引擎

    前面的话 在大多数的项目组中,开发一个Web程序都会出现这样的流程:计划文档提交之后,前端工程师制作了网站的外观模型,然后把它交给后端工程师,它们使用后端代码实现程序逻辑,同时使用外观模型做成基本架构 ...

  6. uniGUI学习汇总

    UniGUI之UniLabel(31) uniGUI之自定义JS事件动作ClientEvents(30) uniGUI之文件下载(29) uniGUI之FDQuery(28) uniGUI之UniPo ...

  7. requests库 cookie和session

    cookie 如果一个相应中包含了cookie,那么可以利用cookie属性拿到这个返回的cookie值: res = requests.get('http://www.baidu.com') pri ...

  8. 七 Spring的分模块开发的配置,保存客户案例

    Spring的分模块开发的配置 加载配置文件的时候,加载多个 在一个配置文件中引入多个配置文件(常用) 保存客户案例 applicationContext.xml: <?xml version= ...

  9. 学习笔记(12)- chatopera的语义理解系统

    参考https://github.com/chatopera/clause-py-demo 前提:安装完毕 Docker.Docker Compose 和 Python3.x git clone ht ...

  10. JS如何阻止事件冒泡

      <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default5.aspx. ...