洛谷 P3951小凯的疑惑/买不到的数目 题解

找规律的梅开二度

首先我们先来自己造几组数据试试看:

a=3,b=5:

1不可以;

2不可以;

3=3*1,可以;

4不可以;

5=5*1,可以;

6=3*2,可以;

7不可以;

8=3*1+5*1,可以;

9=3*3,可以;

10=5*2;可以

此时已经连续出现了3个可以的,那么以后就再也没有不可以了,因为只要拿它们去+3,就可以买到更大的数目,所以在无法准确支付的物品中,最贵的价值是7金币。但是只举一个例子是远远不够的,所以我们再举一个:

a=4,b=7:

1不可以;

2不可以;

3不可以;

4=4*1,可以;

5不可以;

6不可以;

7=7*1,可以;

8=4*2,可以;

9不可以;

10不可以;

11=4*1+7*1,可以;

12=4*3;

13不可以;

14=7*2,可以;

15=7*1+4*2,可以;

16=4*4,可以;

17不可以;

18=7*2+4*1;

19=7*1+4*3;

20=4*5;

21=7*3;

现在已经有连续4个可以的了,所以在无法准确支付的物品中,最贵的价值是17金币.

对测试样例如法炮制,发现得到的结果是正确的,但是代码肯定不能这么写,否则就会超时,接下来我们再找规律,发现:

在无法准确支付的物品中,最贵的价值是 ab-a-b 金币.

AC  Code:

#include<bits/stdc++.h>
using namespace std;
int main()
{
    long long a,b,p;
    cin>>a>>b;
    p=a*b-a-b;
    cout<<p;
    return 0;
}

因为作者非常糟糕,所以若有不足请在评论区中指出。 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值