题目如下

子曰:“三人行,必有我师焉。择其善者而从之,其不善者而改之。”
本题给定甲、乙、丙三个人的能力值关系为:甲的能力值确定是 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三人行相关推荐

  1. 1088 三人行 (20 分)(求问)

    1088 三人行 (20 分)(求问) 子曰:"三人行,必有我师焉.择其善者而从之,其不善者而改之." 本题给定甲.乙.丙三个人的能力值关系为:甲的能力值确定是 2 位正整数:把甲 ...

  2. 1088 三人行 (20 分)(附详细注释,逻辑分析)

    写在前面 逻辑题 丙的类型分析存在错误 输出值分析错误,输出甲的值,不是M的值 除去以上2点,题目相对简单,5分钟a题 细节问题,最耗时间 abs绝对值函数 print 函数类型错误(double型) ...

  3. 【PAT (Basic Level) Practice】——【简单数学】1088 三人行

    文章目录 一[题目难度] 二[题目编号] 三[题目描述] 四[题目示例] 五[解题思路] 六[最终得分] 七[代码实现] 八[提交结果] 一[题目难度] 乙级 二[题目编号] 1088 三人行 (20 ...

  4. PTA乙级 1088 三人行——20分

    子曰:"三人行,必有我师焉.择其善者而从之,其不善者而改之." 本题给定甲.乙.丙三个人的能力值关系为:甲的能力值确定是 2 位正整数:把甲的能力值的 2 个数字调换位置就是乙的能 ...

  5. 1088 三人行(20 分)

    子曰:"三人行,必有我师焉.择其善者而从之,其不善者而改之." 本题给定甲.乙.丙三个人的能力值关系为:甲的能力值确定是 2 位正整数:把甲的能力值的 2 个数字调换位置就是乙的能 ...

  6. 【测试点分析】1088 三人行 (20分)_29行代码AC

    立志用最少的代码做最高效的表达 PAT乙级最优题解-->传送门 子曰:"三人行,必有我师焉.择其善者而从之,其不善者而改之." 本题给定甲.乙.丙三个人的能力值关系为:甲的能 ...

  7. 1088 三人行 (20 分)

    子曰:"三人行,必有我师焉.择其善者而从之,其不善者而改之." 本题给定甲.乙.丙三个人的能力值关系为:甲的能力值确定是 2 位正整数:把甲的能力值的 2 个数字调换位置就是乙的能 ...

  8. 1088 三人行 (20分)

    子曰:"三人行,必有我师焉.择其善者而从之,其不善者而改之." 本题给定甲.乙.丙三个人的能力值关系为:甲的能力值确定是 2 位正整数:把甲的能力值的 2 个数字调换位置就是乙的能 ...

  9. PAT乙级1088 三人行 (20分)

    子曰:"三人行,必有我师焉.择其善者而从之,其不善者而改之." 本题给定甲.乙.丙三个人的能力值关系为:甲的能力值确定是 2 位正整数:把甲的能力值的 2 个数字调换位置就是乙的能 ...

最新文章

  1. IntelliJ IDEA 18 周岁,吐血推进珍藏已久的必装插件
  2. Python游戏开发,pygame模块,Python实现愤怒的小鸟【附带源码】
  3. Android 自定义Toast实现多次触发只会显示一次toast
  4. Jsp+Servlet+JavaBean经典MVC模式理解
  5. python编程分析了一下高考那些事,发现了两个之最,原来是这样
  6. 剑指offer: 不用加减乘除做加法
  7. C#中三种截屏方式总结
  8. [Linux] Vmware 15安装CentOs后显示网络不可用
  9. dom4j-2.1.1 jaxen-1.1.6 读取xml数据源
  10. 用php打出2020年是庚子鼠年,2020年庚子鼠年,做到三善,命运必变!
  11. Firebug方便分解网页的小工具
  12. 解决Win10 PowerShell无法激活Anaconda环境的问题
  13. python3.7安装opencv4.1_树莓派4的opencv4.1.0--python3.7的开发环境安装
  14. 使用vue-cli来搭建vue项目
  15. win10家庭版下loadrunner11安装
  16. 基于opencv的人脸识别
  17. VVC学习之五:帧内预测——MPM列表建立
  18. 男生追女生的方法有哪些?
  19. python绘制直线的垂线_p countour中的Python垂直线
  20. python grad_torch.autograd.grad()函数用法示例

热门文章

  1. Deeplink(深度链接)拉起App,我是这样做到的
  2. Auto CAD:图纸材质图例(石材、瓷砖、细木工板、钢筋混凝土、 木材、夹板、黏土砖 镜面/玻璃、软质吸音层 、钢/金属、硬质吸音层、硬隔层、基层龙骨、陶质类、涂料粉刷层)的设置之详细攻略
  3. 曾几何时,还是游吟长安的醉客
  4. cobble服务器安装配置
  5. OSChina 周一乱弹 —— 花式遛狗法
  6. 【许晓笛】别傻了,瀑布到来时,一句口号根本守不住你的币
  7. 2021EC-final博弈论E题Prof. Pang and Poker
  8. 版本错误:@annotation pointcut expression is only supported at Java 5
  9. Zigbee设备类型选择
  10. 【Python】丘比特之箭,一箭穿心,快去发给你心仪的人叭~