B1091 N-自守数 (15分)

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

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

输入格式:

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

输出格式:

对每个需要检测的数字,如果它是 \(N\)-自守数就在一行中输出最小的 $N $和 \(NK
​^2\)

的值,以一个空格隔开;否则输出 No。注意题目保证 \(N<10\)。

输入样例:

3
92 5 233

输出样例:

3 25392
1 25
No

思路

对0-9逐一检验

9000000

为什么我的代码有一个测试点过不去。

因为对0所有数都会自守的,对一些特殊的数要特别看待。

#include<bits/stdc++.h>
using namespace std; int tmp_ans[9];
int ans[9]; int change(int a[],int b){
int num = 0;
while(b!=0){
a[num++]=b%10;
b/=10;
}
return num;
}
int main(void){
int m,tmp,tmp_num,num,true_ans;
int flag;
scanf("%d",&m);
getchar();
for(int i=0;i<m;i++){//对每个数都处理一次标记
flag = -1;
scanf("%d", &tmp);//要判断有几位数,最大是4位
tmp_num=change(tmp_ans,tmp);
for(int j=0;j<10;j++){
flag = -1;
true_ans=tmp*tmp*j;
num=change(ans,true_ans);
for(int k=0;k<tmp_num;k++){
if(ans[k]!=tmp_ans[k]){
flag = k;
break;
}
}
if(flag==-1){
printf("%d %d\n",j,true_ans);
break;
}
}
if(flag!=-1)
printf("No\n");/*无自守数*/
}
return 0;
}

AC代码

/*消去0这个自守。*/
for(int j=1;j<10;j++)

来自别人的AC代码

不是暴力而是数学的写法。

作者:dk_qi

链接:https://www.jianshu.com/p/c59448ce5414

以题中\(3×92^2=25392\)为例,当数\(K\)为\(92\),自守数\(N\)为\(3\)时,有

(3×92×92-92)% 100 = 0

推广即得

(NKK-K) % ( 10 ^ {length( K ) } ) = 0

#include<stdio.h>

int len(int K);    //该函数返回10的K的长度次方。

int main()
{
int M, K, l, flag;
scanf("%d", &M);
for(int i = 0; i < M; i++){
scanf("%d", &K);
l = len(K);
flag = 0; // flag标记K是否有自守数
for(int j = 0; j < 10; j++){
if((j * K * K - K) % l == 0){
printf("%d %d\n", j, j*K*K);
flag = 1;
break;  //得到最小自守数后直接break
}
}
if(flag == 0) printf("No\n");
}
return 0;
} int len(int K){
int len = 1;
while(K){
len *= 10;
K /= 10;
}
return len;
}

B1091 N-自守数 (15分)的更多相关文章

  1. PAT Basic 1091 N-自守数 (15 分)

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

  2. 1091 N-自守数 (15 分)C语言

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

  3. Day 001:PAT练习--1091 N-自守数 (15 分)

      体验了一阵子现代生活后,朕发现敲代码还是挺有意思的.所以从今天开始,小编秦始皇开始记录朕做PAT题目的过程辣,那话不多说,开始今天的题目了: 题目描述:   如果某个数 K 的平方乘以 N 以后, ...

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

    // 建一个判断函数,接受两个整形的变量,再通过循环按位判断相等与否,主体函数中调用被调函数,建立一个判断变量.#include <iostream> using namespace st ...

  5. P1091 N-自守数

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

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

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

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

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

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

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

  9. PAT B1091 N-自守数

    输入样例: 3 92 5 233   输出样例: 3 25392 1 25 No '解题思路:判断的时候将结果转换成字符串,判断后面几位数字和输入数字是否相同,掉进了N是从1到10的坑,而不是1到9 ...

随机推荐

  1. mybatis批量插入insert时报错

    报错信息: 传入的表格格式数据流(TDS)远程过程调用(RPC)协议流不正确.此 RPC 请求中提供了过多的参数.最多应为2100 错误分析: 由于mybatis拼接的sql语句参数过多导致 解决办法 ...

  2. sharepoint2007就地升级2010系列(四)升级数据库

    上一篇我们完成了系统的升级,今天我们来看一下SQL2005X64是如何升级到SQL2008X64的. 首先,我们先停掉所有sharepoint的服务 其实网上的文档并没有写到这一步,但是我个人觉得,要 ...

  3. java之操作mysql常用方法

    一般引用mysql-connector-java这个包. package DBManager; import java.sql.Connection; import java.sql.DriverMa ...

  4. Linux命令之创建文件夹3

    1)mkdir  fyr即可在当前目录下创建一个文件夹 2)在fyr文件夹下创建一个子目录 mkdir fyr/fyr1 注意:如果不存在父层目录直接创建对应父层目录下的子目录mkdir  FYR/f ...

  5. http 状态码集合

    HTTP常见状态码 200 301 302 404 500   HTTP状态码(HTTP Status Code) 状态码并不是每个都有,为了后期扩展.[update20170505] 一些常见的状态 ...

  6. Centos 6.5_64bit 下安装 Zabbix server 3.0监控主机的加入

    安装Zabbix server 3.0客户端之前需要先关闭selinux和打开10050和10051端口   关闭selinux   1      vi /etc/selinux/config 2   ...

  7. JavaScript 数组排序(从大到小,从小到大)

    1.数组的从大到小排序 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> & ...

  8. 【洛谷2605】[ZJOI2010] 基站选址(线段树维护DP)

    点此看题面 大致题意: 有\(n\)个村庄,每个村庄有\(4\)个属性:\(D_i\)表示与村庄\(1\)的距离,\(C_i\)表示建立基站的费用,\(S_i\)表示能将其覆盖的建基站范围,\(W_i ...

  9. 深入理解MyBatis-Spring中间件(spring/mybatis整合)

    转:http://blog.csdn.net/fqz_hacker/article/details/53485833 Mybatis-Spring 1.应用 mybatis是比较常用的数据库中间件,我 ...

  10. 2018.9.3 CEP课程总结

    什么是CEP课程? 职业生涯规划课程 蓝桥介绍 立人达人 全人教育 人文 重视人 尊重人 关心人 爱护人 人才 人格 简历的制作 找工作的流程? 1.简历的准备------>投发简历(自己投.老 ...