PTA 1088三人行
题目如下
子曰:“三人行,必有我师焉。择其善者而从之,其不善者而改之。”
本题给定甲、乙、丙三个人的能力值关系为:甲的能力值确定是 2 位正整数;把甲的能力值的 2 个数字调换位置就是乙的能力值;甲乙两人能力差是丙的能力值的 X 倍;乙的能力值是丙的 Y 倍。请你指出谁比你强应“从之”,谁比你弱应“改之”。输入格式:
输入在一行中给出三个数,依次为:M(你自己的能力值)、X 和 Y。三个数字均为不超过 1000 的正整数。
输出格式:
在一行中首先输出甲的能力值,随后依次输出甲、乙、丙三人与你的关系:如果其比你强,输出 Cong;平等则输出 Ping;比你弱则输出 Gai。其间以 1 个空格分隔,行首尾不得有多余空格。
注意:如果解不唯一,则以甲的最大解为准进行判断;如果解不存在,则输出 No Solution。输入样例 1:
48 3 7
输出样例 1:
48 Ping Cong Gai
输入样例 2:
48 11 6
输出样例 2:
No Solution
解题思路
这题吧,我觉得用遍历比较好做,但是我的作法存在一定的问题,因为我用的是丙作为对象不断从1开始递增,这样做最后会有一个测试点无法通过,原因是丙有可能是一个小数。如果丙是小数的话用int肯定会出错误。所以最好的方法是用甲(因为甲已经给定了说是一个两位正整数,所以可以用int存储,而且可以将约束条件在10-100之间)。
我的代码是这样的:
#include<iostream>
using namespace std;int getJia(int X,int Y)
{int k;int result=-1;for(int k=1;k<100;k++){if(k*Y>100){return result;}if((k*Y)%10*10+(k*Y)/10>10&&(k*Y)%10*10+(k*Y)/10<100){if((X+Y)*k==(Y*k)%10*10+(Y*k)/10||(Y-X)*k==(Y*k)%10*10+(Y*k)/10){result=(k*Y)%10*10+(k*Y)/10;}}else if((k*Y)%10*10+k*Y/10>100){cout<<k;return result;}}return result;
}int main()
{int score,X,Y;cin>>score>>X>>Y;int Jia=getJia(X,Y);if(Jia==-1){cout<<"No Solution";}else{cout<<Jia;int Yi=Jia%10*10+Jia/10;int Bing=Yi/Y;int arr[3]={Jia,Jia%10*10+Jia/10,Yi/Y};for(int i=0;i<3;i++){if(arr[i]>score)cout<<" Cong";else if(arr[i]<score)cout<<" Gai";elsecout<<" Ping";}}}
这样写因为是以丙不断向上递增的,所以测试点4通过不了。重新换一下用甲作为递增的参数:
正确的代码
#include <iostream>
#include <cmath>
using namespace std;void compare(double t,int m)
{if (m == t) printf(" Ping");else if (m < t) printf(" Cong");else printf(" Gai");
}
int main() {int m,X,Y;cin>>m>>X>>Y;for (int i=99;i>=10;i--) {int j=i%10*10+i/10;double k=abs(j-i)*1.0/X;if (j==k*Y){cout<<i;compare(i,m);compare(j,m);compare(k,m);return 0;}}cout << "No Solution";return 0;
}
运行结果
PTA 1088三人行相关推荐
- 1088 三人行 (20 分)(求问)
1088 三人行 (20 分)(求问) 子曰:"三人行,必有我师焉.择其善者而从之,其不善者而改之." 本题给定甲.乙.丙三个人的能力值关系为:甲的能力值确定是 2 位正整数:把甲 ...
- 1088 三人行 (20 分)(附详细注释,逻辑分析)
写在前面 逻辑题 丙的类型分析存在错误 输出值分析错误,输出甲的值,不是M的值 除去以上2点,题目相对简单,5分钟a题 细节问题,最耗时间 abs绝对值函数 print 函数类型错误(double型) ...
- 【PAT (Basic Level) Practice】——【简单数学】1088 三人行
文章目录 一[题目难度] 二[题目编号] 三[题目描述] 四[题目示例] 五[解题思路] 六[最终得分] 七[代码实现] 八[提交结果] 一[题目难度] 乙级 二[题目编号] 1088 三人行 (20 ...
- PTA乙级 1088 三人行——20分
子曰:"三人行,必有我师焉.择其善者而从之,其不善者而改之." 本题给定甲.乙.丙三个人的能力值关系为:甲的能力值确定是 2 位正整数:把甲的能力值的 2 个数字调换位置就是乙的能 ...
- 1088 三人行(20 分)
子曰:"三人行,必有我师焉.择其善者而从之,其不善者而改之." 本题给定甲.乙.丙三个人的能力值关系为:甲的能力值确定是 2 位正整数:把甲的能力值的 2 个数字调换位置就是乙的能 ...
- 【测试点分析】1088 三人行 (20分)_29行代码AC
立志用最少的代码做最高效的表达 PAT乙级最优题解-->传送门 子曰:"三人行,必有我师焉.择其善者而从之,其不善者而改之." 本题给定甲.乙.丙三个人的能力值关系为:甲的能 ...
- 1088 三人行 (20 分)
子曰:"三人行,必有我师焉.择其善者而从之,其不善者而改之." 本题给定甲.乙.丙三个人的能力值关系为:甲的能力值确定是 2 位正整数:把甲的能力值的 2 个数字调换位置就是乙的能 ...
- 1088 三人行 (20分)
子曰:"三人行,必有我师焉.择其善者而从之,其不善者而改之." 本题给定甲.乙.丙三个人的能力值关系为:甲的能力值确定是 2 位正整数:把甲的能力值的 2 个数字调换位置就是乙的能 ...
- PAT乙级1088 三人行 (20分)
子曰:"三人行,必有我师焉.择其善者而从之,其不善者而改之." 本题给定甲.乙.丙三个人的能力值关系为:甲的能力值确定是 2 位正整数:把甲的能力值的 2 个数字调换位置就是乙的能 ...
最新文章
- IntelliJ IDEA 18 周岁,吐血推进珍藏已久的必装插件
- Python游戏开发,pygame模块,Python实现愤怒的小鸟【附带源码】
- Android 自定义Toast实现多次触发只会显示一次toast
- Jsp+Servlet+JavaBean经典MVC模式理解
- python编程分析了一下高考那些事,发现了两个之最,原来是这样
- 剑指offer: 不用加减乘除做加法
- C#中三种截屏方式总结
- [Linux] Vmware 15安装CentOs后显示网络不可用
- dom4j-2.1.1 jaxen-1.1.6 读取xml数据源
- 用php打出2020年是庚子鼠年,2020年庚子鼠年,做到三善,命运必变!
- Firebug方便分解网页的小工具
- 解决Win10 PowerShell无法激活Anaconda环境的问题
- python3.7安装opencv4.1_树莓派4的opencv4.1.0--python3.7的开发环境安装
- 使用vue-cli来搭建vue项目
- win10家庭版下loadrunner11安装
- 基于opencv的人脸识别
- VVC学习之五:帧内预测——MPM列表建立
- 男生追女生的方法有哪些?
- python绘制直线的垂线_p countour中的Python垂直线
- python grad_torch.autograd.grad()函数用法示例
热门文章
- Deeplink(深度链接)拉起App,我是这样做到的
- Auto CAD:图纸材质图例(石材、瓷砖、细木工板、钢筋混凝土、 木材、夹板、黏土砖 镜面/玻璃、软质吸音层 、钢/金属、硬质吸音层、硬隔层、基层龙骨、陶质类、涂料粉刷层)的设置之详细攻略
- 曾几何时,还是游吟长安的醉客
- cobble服务器安装配置
- OSChina 周一乱弹 —— 花式遛狗法
- 【许晓笛】别傻了,瀑布到来时,一句口号根本守不住你的币
- 2021EC-final博弈论E题Prof. Pang and Poker
- 版本错误:@annotation pointcut expression is only supported at Java 5
- Zigbee设备类型选择
- 【Python】丘比特之箭,一箭穿心,快去发给你心仪的人叭~