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

  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. 1091 N-自守数 (15 分)

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

  4. PAT乙级:1056 组合数的和 (15分)

    PAT乙级:1056 组合数的和 (15分) 给定 N 个非 0 的个位数字,用其中任意 2 个数字都可以组合成 1 个 2 位的数字.要求所有可能组合出来的 2 位数字的和.例如给定 2.5.8,则 ...

  5. 【PAT】B1056 组合数的和(15 分)

    就看着代码量一直到没什么好说的了 #include<stdio.h> int main(){ int N,K;scanf("%d",&N); int sum=0 ...

  6. 【PAT】1016 部分A+B(15 分)

    1016 部分A+B(15 分) 正整数 A 的“D​A​​(为 1 位整数)部分”定义为由 A 中所有 D​A​​ 组成的新整数 P​A​​.例如:给定 A=3862767,D​A​​=6,则 A  ...

  7. PAT Basic 1011 A+B 和 C (15 分)

    给定区间 [−] 内的 3 个整数 A.B 和 C,请判断 A+B 是否大于 C. 输入格式: 输入第 1 行给出正整数 T (≤),是测试用例的个数.随后给出 T 组测试用例,每组占一行,顺序给出  ...

  8. PAT Basic 1086 就不告诉你 (15 分)

    做作业的时候,邻座的小盆友问你:“五乘以七等于多少?”你应该不失礼貌地围笑着告诉他:“五十三.”本题就要求你,对任何一对给定的正整数,倒着输出它们的乘积. 输入格式: 输入在第一行给出两个不超过 10 ...

  9. PAT Basic 1036 跟奥巴马一起编程 (15 分)

    美国总统奥巴马不仅呼吁所有人都学习编程,甚至以身作则编写代码,成为美国历史上首位编写计算机代码的总统.2014 年底,为庆祝“计算机科学教育周”正式启动,奥巴马编写了很简单的计算机代码:在屏幕上画一个 ...

随机推荐

  1. 四旋翼中的PID调节方法 | betaflight固件如何调节PID

    roll横滚,pitch俯仰,yaw航向 一.PID的作用概述 1.P产生响应速度和力度,是I和D的基础 过小响应慢(虽然无震荡) 过大会产生振荡且不断发散 2.D抑制过冲和振荡,抵抗外界的突发干扰, ...

  2. 什么是Spring MVC框架的控制器?

    控制器提供一个访问应用程序的行为,此行为通常通过服务接口实现.控制器解析用户输入并将其转换为一个由视图呈现给用户的模型.Spring用一个非常抽象的方式实现了一个控制层,允许用户创建多种用途的控制器.

  3. Linux的权限总结

    一般权限和特殊权限可控制 文件所有者.所有组.其他人的读写执行权限, 而隐藏权限则可以进行补充权限,可限制 文件内容只能追加内容,不更新属性等信息 ACL则可以进行让某个用户或组或other拥有指定文 ...

  4. DRF 简单使用(详细注释版)

    1.djangorestframework使用 下载安装 pip install djangorestframework ## djangorestframework pip install djan ...

  5. 爬虫-ip代理

    代理(proxy) 代理服务器:实现请求转发,从而可以实现更换请求的ip地址 代理的匿名度: 透明:服务器知道你使用了代理并且知道你的真实ip 匿名:服务器知道你使用了代理,但是不知道你的真实ip 高 ...

  6. 查看mysql相关信息

    查看本机mysql的相关信息,执行以下SQL即可: SHOW VARIABLES LIKE "%char%";

  7. ctfhub 双写绕过 文件头检查

    双写绕过 进入环境 上传一句话木马 上传路径感觉不对检查源代码 从此处可以看出需要双写绕过 使用bp抓包 此处这样修改即可双写绕过 使用蚁剑连接 即可找到flag 文件头检查 进入环境 上传一句话木马 ...

  8. Qunee for HTML5 v1.6新版本发布

    Qunee for HTML5 V1.6正式发布,修复了一些 BUG,增加了滚动条支持,改进了编辑器,增加了JSON 导入导出.告警冒泡.连线流动,UI 定制等扩展示例,欢迎 访问 导航面板 增加了滚 ...

  9. IE中input标签密码框与文本框宽度不一样问题

    前言 在项目登录界面中有账户和密码的输入框,在Chrome中显示是正常的(本人使用的是Chrome浏览器,平时不用IE).等部署到客户的服务器上,访问时发现一个问题,在IE浏览器中文本框与密码框的宽度 ...

  10. 体温登记app开发流程

    关于体温app,比较难的是获取定位信息,剩下的就是增删改查. 设计思路:首先布局一个添加页面,给每个元件添加id,之后在获取地点的EditText获取位置信息,在添加两个布局文件,体现在一个页面里用来 ...