体验了一阵子现代生活后,朕发现敲代码还是挺有意思的。所以从今天开始,小编秦始皇开始记录朕做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;
}
}

总结一下:

  反正这里也没人看见,稍微多说点...

  本着互联网最初的开源精神,希望能尽自己所能与同样正在努力中的同俦分享。。。好吧编不下去了,不管怎么说,写博客还是挺好玩的。

  朕稍微是有点后悔的,前两年没有好好学习,现在想想错过了很多机会。不过还好现在朕还算是有了比较明确的目标,虽然朕长期以来不好的学习习惯,以及之前与人落下的功课仍在,但是朕觉得从现在开始,每天坚持努力一些,长此以往,一定会有成效的。毕竟朕也是很聪明的,就像朕的一个朋友说的:只要是向着正确的方向走,总会看到出口的,并且那一天会来的很快。

  最后贴几句今天看到的话:

  “妖怪在这个世界上存在,是有一定道理的,然而,只要有战胜妖怪的那份斗志,就能够百战百胜,远离危险,战胜困难!”

  “还有,勇士经常是孤独的。勇士必须连续作战,保持胜利战果,所以就变得非常孤独。”

  “你能忍耐吗?”

最新文章

  1. iOS中UI阶段常用的一些方法
  2. WebAdaptor Object reference not set to an instance of an object.
  3. 在页面头部&lt;!DOCTYPE html ....&gt; 前面不能有任何输出
  4. atom 折腾记(转载的)
  5. NSIS
  6. eclipse 编辑器的使用
  7. Newtonsoft.Json同时对多个时间字段以不同的格式序列化
  8. 新增tab页无法获取到数据,原来是URL的rewrite配置文件忘了修改
  9. SQL 增加或删除一列
  10. 转 批处理 %~dp0的意义
  11. 8、flask之flask-script组件
  12. ubuntu Emergency Mode
  13. BOM(浏览器对象模型)的一些操作
  14. Vue数据双向绑定原理及简单实现
  15. 作业2:分布式版本控制系统Git的安装与使用
  16. Android中不显示标题
  17. python运算符优先级
  18. centos6.5新增加硬盘挂载并实现开机自动挂载
  19. Docker存出载入镜像
  20. strus2 struts.xml详解

热门文章

  1. 序列化与反序列化、def的介绍与快速使用、cbv源码分析、APIView与request对象分析
  2. win10关于后缀名无法关联相应程序默认打开方式的处理方法
  3. 什么是 Hystrix 断路器?我们需要它吗?
  4. 事务的 ACID 是指什么?
  5. Java中自动装箱与拆箱
  6. Java 中应该使用什么数据类型来代表价格?
  7. js--事件循环机制
  8. .NET面试经典三问:什么是.NET?什么是.NET Framework?什么是.NET Core?
  9. 3_Phase Portrait_相图_相轨迹
  10. 2022首场MASA技术团队黑客松赛事大赛完美落幕!精彩集锦