废物中的菜鸡


私信TA

用户名:feiwuzhongdecai

访问量:317

签 名:

等  级
排  名 48576
经  验 258
参赛次数 0
文章发表 1
年  龄 0
在职情况 学生
学  校
专  业

  自我简介:

解题思路:题目给出两个数字(假设为x和y),要求找到最大的不能用这两个数表示的数字(假设为n)。首先能确定x*y是一定能由x,y表示的

那么大于x*y的数字也一定可以由x,y组成。因此循环可以从x*y开始,逐渐递减,找到第一个不满足条件的数字即为答案。判断条件分为两个(下列p为倍数),第一个while循环找到x*p<i的最大p,如果n减去整数倍的x对y取余都不为0,说明该数不能由x,y组成,就是我们要的答案。

注意事项:

跳出while循环时需要判断一下是因为能由x,y组成还是因为x*p>i(或者y*p>i,其实都一样),如果是后者情况,p记得要减一。for循环第一句一定要初始化a和倍数p,否则会出错。

参考代码:

#include<stdio.h>

using namespace std;

int main()

{

int x,y,p,n,a;

int i,max;

a=0;

p=0;

scanf("%d%d",&x,&y);

n=x*y;

for(i=n;i>=1;i--)

{

a=0; p=0;

while((i-x*p)%y!=0 && x*p<i)

p++;

if(x*p>i)

p--;

if((i-x*p)%y!=0)

a=1;

if(a==1)

{

max=i;

break;

}

}

printf("%d",max);

return 0;

}


 

0.0分

2 人评分

  评论区