Day 001:PAT练习--1091 N-自守数 (15 分)
体验了一阵子现代生活后,朕发现敲代码还是挺有意思的。所以从今天开始,小编秦始皇开始记录朕做PAT题目的过程辣,那话不多说,开始今天的题目了:
题目描述:
如果某个数 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
可见题意一目了然,实在不需要朕多bbll了。话不多说,上代码:
#include<iostream>
#include<math.h>
using namespace std;
int main(){
int m;//m <= 20
cin >> m;
bool cnt = 0;
for(int i = 0; i < m; i++){
int temp;// 0 < temp <= 1000
cin >> temp;
if(temp > 0 && temp < 10){
for(int j = 1; j < 10; j++){
if((temp * temp * j) % 10 == temp){
cout << j << " " << temp * temp * j;
cnt = true;
break;
}
}
if(cnt == false){
cout << "No";
}
}else if(temp >= 10 && temp < 100){
for(int k = 1; k < 10; k++){
if((temp * temp * k) % 100 == temp){
cout << k << " " << temp * temp * k;
cnt = true;
break;
}
}
if(cnt == false){
cout << "No";
}
}else if(temp >= 100 && temp < 1000){
for(int l = 1; l < 10; l++){
if((temp * temp * l) % 1000 == temp){
cout << l << " " << temp * temp * l;
cnt = true;
break;
}
}
if(cnt == false){
cout << "No";
}
}else if(temp == 1000){
cout << "No";
}
cnt = false;
if(i != m - 1){
cout << endl;
}
}
return 0;
}
这道题比较简单,但是个人认为有这么几个需要注意的地方:
1、注意样例中的输出格式是非常重要的!!!这道题就是因为朕不知道要把no写成样例里的“No”,而写成了“NO”,因此浪费了很多时间调试代码。因此以后做题要好好读样例,不要看到题很简单就直接去做了。所谓“千里之堤,溃于蚁穴”就是这样。
2、在需要输出No的时候,要看好了是在1-9所有数字全部与给定数平方相乘仍无法满足自守的条件时输出,因此No输出语句要放在if-else语句的for循环之外;还有别忘了设置一个bool量cnt,用来判断是否需要输出No,否则则会不论什么情况都会输出No导致出错。
3、PAT的格式要求往往比较严格,通常来说,如果有多行输出,则最后一行不换行,因此在大for循环的末尾要加上一个特判条件,如果当前不是最后一次循环,则换行。
4、因为输入数的范围是1-1000,因此需要设置四个if-else判断条件用于不同位数的取余,当然为了代码的简洁也可以编写特定函数用于取余。下面是另一位dl编写的代码,与我的区别仅仅在于取余时编写了一个特定的函数(我也会 只是懒得写):
#include <iostream>
using namespace std;
int factory(int n) {
int sum = 10;
while (n /= 10)
sum *= 10;
return sum;
}
int main() {
int M;
cin >> M;
while (M--) {
int K, flag = 1;
cin >> K;
for (int i = 0; i < 10; ++i) {
if (K * K * i % factory(K) == K) {
cout << i << " " << K * K * i << endl;
flag = 0;
break;
}
}
if (flag) cout << "No" << endl;
}
}
总结一下:
反正这里也没人看见,稍微多说点...
本着互联网最初的开源精神,希望能尽自己所能与同样正在努力中的同俦分享。。。好吧编不下去了,不管怎么说,写博客还是挺好玩的。
朕稍微是有点后悔的,前两年没有好好学习,现在想想错过了很多机会。不过还好现在朕还算是有了比较明确的目标,虽然朕长期以来不好的学习习惯,以及之前与人落下的功课仍在,但是朕觉得从现在开始,每天坚持努力一些,长此以往,一定会有成效的。毕竟朕也是很聪明的,就像朕的一个朋友说的:只要是向着正确的方向走,总会看到出口的,并且那一天会来的很快。
最后贴几句今天看到的话:
“妖怪在这个世界上存在,是有一定道理的,然而,只要有战胜妖怪的那份斗志,就能够百战百胜,远离危险,战胜困难!”
“还有,勇士经常是孤独的。勇士必须连续作战,保持胜利战果,所以就变得非常孤独。”
“你能忍耐吗?”

Day 001:PAT练习--1091 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,所以 ...
- 1091 N-自守数 (15 分)
// 建一个判断函数,接受两个整形的变量,再通过循环按位判断相等与否,主体函数中调用被调函数,建立一个判断变量.#include <iostream> using namespace st ...
- PAT乙级:1056 组合数的和 (15分)
PAT乙级:1056 组合数的和 (15分) 给定 N 个非 0 的个位数字,用其中任意 2 个数字都可以组合成 1 个 2 位的数字.要求所有可能组合出来的 2 位数字的和.例如给定 2.5.8,则 ...
- 【PAT】B1056 组合数的和(15 分)
就看着代码量一直到没什么好说的了 #include<stdio.h> int main(){ int N,K;scanf("%d",&N); int sum=0 ...
- 【PAT】1016 部分A+B(15 分)
1016 部分A+B(15 分) 正整数 A 的“DA(为 1 位整数)部分”定义为由 A 中所有 DA 组成的新整数 PA.例如:给定 A=3862767,DA=6,则 A ...
- PAT Basic 1011 A+B 和 C (15 分)
给定区间 [−] 内的 3 个整数 A.B 和 C,请判断 A+B 是否大于 C. 输入格式: 输入第 1 行给出正整数 T (≤),是测试用例的个数.随后给出 T 组测试用例,每组占一行,顺序给出 ...
- PAT Basic 1086 就不告诉你 (15 分)
做作业的时候,邻座的小盆友问你:“五乘以七等于多少?”你应该不失礼貌地围笑着告诉他:“五十三.”本题就要求你,对任何一对给定的正整数,倒着输出它们的乘积. 输入格式: 输入在第一行给出两个不超过 10 ...
- PAT Basic 1036 跟奥巴马一起编程 (15 分)
美国总统奥巴马不仅呼吁所有人都学习编程,甚至以身作则编写代码,成为美国历史上首位编写计算机代码的总统.2014 年底,为庆祝“计算机科学教育周”正式启动,奥巴马编写了很简单的计算机代码:在屏幕上画一个 ...
随机推荐
- S7-1200学习记录
型号:CPU 1212C DC/DC/DC 硬件包括CPU模块.信号模块(输入输出).通信模块.屏幕面板 1.通信模块 S7-1200最多可以添加3块通信模块,可以使用点对点通信模块.PROFIBUS ...
- Java基础(补充)
为什么 Java 中只有值传递? 开始之前,我们先来搞懂下面这两个概念: 形参&实参 值传递&引用传递 形参&实参 方法的定义可能会用到 参数(有参的方法),参数在程序语言中分 ...
- HashMap:为什么容量总是为2的n次幂
HashMap:为什么容量总是为2的n次幂1).HashMap是根据key的hash值决定key放到哪个桶中,通过tab[i = (n - 1) & hash]公式计算得出 这里的n是Hash ...
- Dubbo 使用过程中都遇到了些什么问题?
在注册中心找不到对应的服务,检查 service 实现类是否添加了@service 注解 无法连接到注册中心,检查配置文件中的对应的测试 ip 是否正确
- @Param注解和@Mapper注解
@Param 1.如果dao方法中只有一个参数,入参可以为#{0}或者#{任意单词},也可以使用@Param指定参数名称,sql中就只能#{指定名称}获取参数 public List<Regio ...
- 解释内存中的栈(stack)、堆(heap)和方法区(method area) 的用法?
通常我们定义一个基本数据类型的变量,一个对象的引用,还有就是函数调用的 现场保存都使用 JVM 中的栈空间:而通过 new 关键字和构造器创建的对象则放在 堆空间,堆是垃圾收集器管理的主要区域,由于现 ...
- Zookeeper 保证了如下分布式一致性特性?
1.顺序一致性 2.原子性 3.单一视图 4.可靠性 5.实时性(最终一致性) 客户端的读请求可以被集群中的任意一台机器处理,如果读请求在节点上注册了 监听器,这个监听器也是由所连接的 zookeep ...
- jdk_8接口的内部内容
目标: 如何创建已定义好的接口类型的对象呢? 步骤: 实现的概述 抽象方法的使用 默认方法的使用 静态方法的使用 接口的常量使用 讲解: 实现的概述 类与接口的关系为实现关系,即类实现接口,该类可以称 ...
- mysql学习 | LeetCode数据库简单查询练习
力扣:https://leetcode-cn.com/ 力扣网数据库练习:https://leetcode-cn.com/problemset/database/ 文章目录 175. 组合两个表 题解 ...
- 前端眼里的docker
docker是什么 可以简单的认为docker容器是一个虚拟机,封装就是把这个虚拟机打包,打包后能在任何系统跑,docker装上即用.也可以形象的比喻成一个集装箱,把所有货物都打包好放到箱子里,不需要 ...