B1091 N-自守数 (15分)
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分)的更多相关文章
- PAT Basic 1091 N-自守数 (15 分)
如果某个数 K 的平方乘以 N 以后,结果的末尾几位数等于 K,那么就称这个数为“N-自守数”.例如 3,而 2 的末尾两位正好是 9,所以 9 是一个 3-自守数. 本题就请你编写程序判断一个给定的 ...
- 1091 N-自守数 (15 分)C语言
如果某个数 K 的平方乘以 N 以后,结果的末尾几位数等于 K,那么就称这个数为"N-自守数".例如 3×92^2 =25392,而 25392 的末尾两位正好是 92,所以 ...
- Day 001:PAT练习--1091 N-自守数 (15 分)
体验了一阵子现代生活后,朕发现敲代码还是挺有意思的.所以从今天开始,小编秦始皇开始记录朕做PAT题目的过程辣,那话不多说,开始今天的题目了: 题目描述: 如果某个数 K 的平方乘以 N 以后, ...
- 1091 N-自守数 (15 分)
// 建一个判断函数,接受两个整形的变量,再通过循环按位判断相等与否,主体函数中调用被调函数,建立一个判断变量.#include <iostream> using namespace st ...
- P1091 N-自守数
1091 N-自守数 (15分) 如果某个数 K 的平方乘以 N 以后,结果的末尾几位数等于 K,那么就称这个数为“N-自守数”.例如 3,而 2 的末尾两位正好是 9,所以 9 是一个 3-自守 ...
- PAT 乙级 1091 N-自守数 (15 分)
1091 N-自守数 (15 分) 如果某个数 K 的平方乘以 N 以后,结果的末尾几位数等于 K,那么就称这个数为“N-自守数”.例如 3×922=25392,而 25392 的末尾两位正好是 ...
- pat乙级 1091 N-自守数 (15 分)
如果某个数 K 的平方乘以 N 以后,结果的末尾几位数等于 K,那么就称这个数为“N-自守数”.例如 3×922=25392,而 25392 的末尾两位正好是 92,所以 92 是一个 3-自守 ...
- 1091 N-自守数 (15 分)
如果某个数 K 的平方乘以 N 以后,结果的末尾几位数等于 K,那么就称这个数为“N-自守数”.例如 3×922=25392,而 25392 的末尾两位正好是 92,所以 92 是一个 3-自守 ...
- PAT B1091 N-自守数
输入样例: 3 92 5 233 输出样例: 3 25392 1 25 No '解题思路:判断的时候将结果转换成字符串,判断后面几位数字和输入数字是否相同,掉进了N是从1到10的坑,而不是1到9 ...
随机推荐
- 洛谷P3128 [USACO15DEC]最大流Max Flow(树上差分)
题意 题目链接 Sol 树上差分模板题 发现自己傻傻的分不清边差分和点差分 边差分就是对边进行操作,我们在\(u, v\)除加上\(val\),同时在\(lca\)处减去\(2 * val\) 点差分 ...
- Dynamics CRM 4.0升级Dynamics CRM 2013后全局Ribbon的修改
最近在为一个客户在Dynamics CRM 4.0到Dynamics CRM 2013的升级,升级之后发现原来在Dynamics CRM 4.0中定义的全局Ribbon按钮像牛皮癣一样,在每个实体页面 ...
- 将pugixml库编译成动态库的做法
作者:朱金灿 来源:http://blog.csdn.net/clever101 pugixml库默认是编译成静态库的.要把pugixml库编译成一个动态库,需要对代码做一些修改,具体是将 // If ...
- ArcGIS Desktop中面与面之间空隙填充
1.前言 再给客户培训过程中被问到这样一个问题,几个面中间有一个空心部分(如下图所示),如何快速绘制中心部分的要素. 2.操作流程 1.打开Editor工具栏,开始编辑操作. 2.点击创建要素按钮,打 ...
- 解决dubbo的服务发布注解@service不能和事务注解不能共用的方案
最近在项目的开发中遇到了一个问题,就是服务提供方使用@service发布dubbo服务时候,服务消费方@Reference无法注入bean导致空指针异常的问题.分析原因为@service注解并没有将服 ...
- js&jquery:添加事件的三种方法和常用的一些事件
一.添加事件的方法 1.EventTarget.addEventListener添加 获取事件目标元素,通过addEventListener函数添加 // Assuming myButton is a ...
- SQL中的聚合函数
聚合函数是对一组值执行计算并返回单一的值的函数,它经常与SELECT语句的GROUP BY子句一同使用,SQL SERVER 中具体的聚合函数如下:1. AVG 返回指定组中的平均值,空值被忽略. 例 ...
- QT OpenGL中文教程在QT4版本后的错误代码更改(一)
由于教程中说的已经够可以了,这里就不对代码进行分析了,有兴趣可以自己去看看.这个教程来源于原来的NeHeOpenGL中文教程 (http://www.yakergong.net/nehe/) ,但其有 ...
- SPOJ - ORDERS--- Ordering the Soldiers---根据逆序对求原数组
题目链接: https://vjudge.net/problem/SPOJ-ORDERS 题目大意: 根据每个数字的逆序对求出原数组 解题思路: 举个例子: n = 5 a[ n ] = { 0, 1 ...
- 导航栏上的item的位置设置
/** leftItem */ UIButton *leftbtn = [[UIButton alloc]initWithFrame:CGRectMake(, , , )]; [leftbtn set ...